这是查询语法版本:
DataGridViewRowCollection mydgvrs = new DataGridView().Rows;
IEnumerable<DataGridViewRow> a =
from DataGridViewRow row in mydgvrs
where row.Height > 0
select row;
这很好,方法语法版本:
IEnumerable<DataGridViewRow> a2 =
mydgvrs.Where(row => row.Height > 0);
编译器拒绝的- “没有扩展方法在哪里......可以找到”?
怎么了?
答案 0 :(得分:1)
因为您具有查询语法版本中指定的类型。 (from DataGridViewRow row
中的DataGridViewRow。)
要翻译此内容,您需要Cast<T>
:
IEnumerable<DataGridViewRow> a2 = mydgvrs.Cast<DataGridViewRow>()
.Where(row => row.Height > 0);
这是必需的,因为mydgvrs
实现了IEnumerable
,而不是IEnumerable<DataGridViewRow>
。