7

我有一个DataTable. 我想根据Index/Row Number中的行选择行DataTable

假设下面是DataTable

----------------    ---------------
| ID   | Name  |    | Index/RowNo |
----------------    ---------------
| A001 | John  |    |      1      |
| A002 | Foo   |    |      2      |
| A003 | Rambo |    |      3      |
| A004 | Andy  |    |      4      |
| ...  | ...   |    |      5      |
----------------    ---------------

现在,我想DataTable使用标准从上面显示的行中选择例如Index > 2,在这种情况下,索引 1 处的第一个条目A001 | John将不会成为结果的一部分DataTable。我怎样才能有效地做到这一点?

此外,我希望以查询结果的形式获得我的结果DataTableLinq

我正在尝试做这样的事情:

var result = dt.Select("RowNum > 1", "");

或者

var result = from row in dt.AsEnumerable()
             where RowNum > 1
             select row;
4

2 回答 2

8

我正在尝试做这样的事情:

var result = dt.Select("RowNum > 1", "");

Enumerable.Skip甚至可以使用 aDataTable因为它是一个IEnumerable<DataRow>

IEnumerable<DataRow> allButFirst = table.AsEnumerable().Skip(1);

得到一个新DataTable的:

DataTable tblAllButFirst = allButFirst.CopyToDataTable();

如果您的下一个问题是如何仅获取具有给定索引的行:

var allowedIndices = new[]{ 2, 4, 7, 8, 9, 10 };
DataTable tblAllowedRows = table.AsEnumerable()
                                .Where((r, i) => allowedIndices.Contains(i))
                                .CopyToDataTable();
于 2012-10-17T09:12:51.403 回答
5
var result = table.AsEnumerable()
                  .Where((row, index) => index > 1)
                  .CopyToDataTable()
于 2012-10-17T09:17:45.977 回答