为什么我必须在DataGridViewRow上调用Cast扩展方法?这是行不通的。varresult=fromrowingrid.Rowswhere(string)row.Cells["COLUMN_1"].Value=="Test"selectrow.Cells["COLUMN_2"].Valueasint?;但确实如此。varresult=fromrowingrid.Rows.Cast()where(string)row.Cells["COLUMN_1"].Value=="Test"selectrow.Cells["COLUMN_2"].Valueasint?;据我所知,DataGridViewRowCollection是DataGridViewRows的集合。那么,为什么我必须先将每个成员强制转换为DataGridViewRow,然后才能访问其属性?它是否与DataGridViewRowCollection实现非泛型IEnumerable而不是泛型IEnumerable的事实有关?或者它显然在内部使用ArrayList吗?这并没有给我带来任何实际问题,但我想更好地理解它。是的,这正是因为它宣传的界面。LINQ中的几乎所有扩展方法都在IEnumerable而不是IEnumerable上。Cast是弥合差距的一种方式-OfType是另一种方式。但是,有一种调用Cast的更简单方法-只需显式键入范围变量:varresult=fromDataGridViewRowrowingrid.Rowswhere(string)row.Cells["COLUMN_1"].Value=="Test"选择行。单元格["COLUMN_2"].Valueasint?;编译器将其转换为与第二个示例完全相同的代码。以上是C#学习教程:为什么要在DataGridViewRow上调用Cast扩展方法?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
