Fur*_*dar 6 c# linq indexing datatable criteria
我有一个DataTable
.我想根据行中的Index
/ 选择Row Number
行DataTable
.
假设以下是DataTable
:
---------------- ---------------
| ID | Name | | Index/RowNo |
---------------- ---------------
| A001 | John | | 1 |
| A002 | Foo | | 2 |
| A003 | Rambo | | 3 |
| A004 | Andy | | 4 |
| ... | ... | | 5 |
---------------- ---------------
Run Code Online (Sandbox Code Playgroud)
现在,我想DataTable
使用标准来选择上面显示的行,例如Index > 2
,在那种情况下,索引1处的第一个条目A001 | John
将不会成为结果的一部分DataTable
.我怎样才能有效地做到这一点?
此外,我想以结果DataTable
和Linq
查询结果的形式得到我的结果.
我想做这样的事情:
var result = dt.Select("RowNum > 1", "");
Run Code Online (Sandbox Code Playgroud)
要么
var result = from row in dt.AsEnumerable()
where RowNum > 1
select row;
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
Run Code Online (Sandbox Code Playgroud)var result = dt.Select("RowNum > 1", "");
您Enumerable.Skip
甚至可以使用DataTable
它,因为它是IEnumerable<DataRow>
:
IEnumerable<DataRow> allButFirst = table.AsEnumerable().Skip(1);
Run Code Online (Sandbox Code Playgroud)
得到一个新DataTable
的:
DataTable tblAllButFirst = allButFirst.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)
如果您的下一个问题是如何只采用给定索引的行:
var allowedIndices = new[]{ 2, 4, 7, 8, 9, 10 };
DataTable tblAllowedRows = table.AsEnumerable()
.Where((r, i) => allowedIndices.Contains(i))
.CopyToDataTable();
Run Code Online (Sandbox Code Playgroud)
var result = table.AsEnumerable()
.Where((row, index) => index > 1)
.CopyToDataTable()
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
20787 次 |
最近记录: |