Mas*_*gar 24 c# linq datagridview
我想DataGridViewRowCollection在LINQ表达式中使用扩展方法和lambda表达式.不幸的是,扩展方法是类型IEnumerable<T>,它DataGridViewRowCollection没有实现.有趣的是,我可以在这里使用类似SQL的语法LINQ:
IEnumerable<DataGridViewRow> lRows = from DataGridViewRow row in dgvGrid.Rows
select row;
Run Code Online (Sandbox Code Playgroud)
在这之后,我可以使用LINQ扩展方法:
foreach (DataGridViewRow lRow in lRows.Where(row => row.index > 4)) { ... }
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以将我转换DataGridViewRowCollection成一个IEnumerable<>没有使用那么长的第一个声明?同样的事情适用于DataGridViewCellCollection和DataGridViewColumnCollection.
PS.我正在使用.net framework 3.5
And*_*are 39
是的,这样做:
var rows = yourDataGridViewRowCollection
.Cast<DataGridViewRow>()
.Where(row => row.index > 4);
Run Code Online (Sandbox Code Playgroud)
这使用Enumerable.Cast扩展方法:
该
Cast<TResult>(IEnumerable)方法允许通过提供必要的类型信息在非泛型集合上调用标准查询运算符.例如,ArrayList没有实现IEnumerable<T>,但是通过调用Cast<TResult>(IEnumerable)该ArrayList对象,然后可以使用标准查询运算符来查询序列.
| 归档时间: |
|
| 查看次数: |
10135 次 |
| 最近记录: |