我有一个名为 Rows
的自定义类实现 IEnumerable<Row>
.我经常在 Rows
上使用 LINQ 查询实例:
Rows rows = new Rows { row1, row2, row3 };
IEnumerable<Row> particularRows = rows.Where<Row>(row => condition);
我希望能够做到以下几点:
Rows rows = new Rows { row1, row2, row3 };
Rows particularRows = (Rows)rows.Where<Row>(row => condition);
但是,我收到“System.InvalidCastException:无法将类型为‘WhereEnumerableIterator1[NS.Row]’的对象转换为类型‘NS.Rows’”。我有一个Rows
构造函数 IEnumerable<Row>
,所以我可以这样做:
Rows rows = new Rows { row1, row2, row3 };
Rows particularRows = new Rows(rows.Where<Row>(row => condition));
然而,这看起来很笨重,我希望能够投出一个 IEnumerable<Row>
成为Rows
自 Rows
工具 IEnumerable<Row>
.有什么想法吗?
最佳答案
救援的扩展方法。
public static Rows ToRows(this IEnumerable<Row> source)
{
return new Rows(source);
}
行 particularRows = rows.Where(...).ToRows();
“类型转换”不适合解决这个问题。每个Rows
是一个 IEnumerable<Row>
, 但不是每个 IEnumerable<Row>
是 Rows
关于C# 转换问题 : from IEnumerable to custom type,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2904977/