Joh*_*ant 1 .net c# linq datagridview winforms
这不起作用.
var result =
from row in grid.Rows
where (string) row.Cells["COLUMN_1"].Value == "Test"
select row.Cells["COLUMN_2"].Value as int?;
Run Code Online (Sandbox Code Playgroud)
但这样做.
var result =
from row in grid.Rows.Cast<DataGridViewRow>()
where (string) row.Cells["COLUMN_1"].Value == "Test"
select row.Cells["COLUMN_2"].Value as int?;
Run Code Online (Sandbox Code Playgroud)
据我所知,DataGridViewRowCollection是DataGridViewRows的集合.那么为什么我必须先将每个成员转换为DataGridViewRow才能访问其属性?
它与DataGridViewRowCollection实现非泛型IEnumerable但非泛型版本的事实有什么关系IEnumerable<DataGridViewRow>吗?或者它显然在ArrayList内部使用?它并没有给我带来任何实际问题,但我想更好地理解它.
是的,这正是因为它所宣传的界面.几乎LINQ中的所有扩展方法都在工作IEnumerable<T>而不是IEnumerable.Cast<>是弥合这一差距的一种方式 - OfType<>是另一种方式.
但是,有一种更简单的调用方式Cast<T>- 只需显式键入范围变量:
var result =
from DataGridViewRow row in grid.Rows
where (string) row.Cells["COLUMN_1"].Value == "Test"
select row.Cells["COLUMN_2"].Value as int?;
Run Code Online (Sandbox Code Playgroud)
编译器将其转换为与第二个示例完全相同的代码.
| 归档时间: |
|
| 查看次数: |
885 次 |
| 最近记录: |