C# 好像我';我错过了指令?System.Data.DataTableCollection不包含';第一';
我有一个数据集,在其中我在行上运行foreach循环C# 好像我';我错过了指令?System.Data.DataTableCollection不包含';第一';,c#,linq,C#,Linq,我有一个数据集,在其中我在行上运行foreach循环 foreach(var row in input.Tables.First().Rows) {.... 但我收到了这个编译错误: 错误1“System.Data.DataTableCollection”不包含“First”的定义,并且找不到接受“System.Data.DataTableCollection”类型的第一个参数的扩展方法“First”(是否缺少using指令或程序集引用?) 似乎我缺少了一条指令,但我使用的是System.Li
foreach(var row in input.Tables.First().Rows)
{....
但我收到了这个编译错误:
错误1“System.Data.DataTableCollection”不包含“First”的定义,并且找不到接受“System.Data.DataTableCollection”类型的第一个参数的扩展方法“First”(是否缺少using指令或程序集引用?)
似乎我缺少了一条指令,但我使用的是System.Linq,我还添加了System.Data.DataSetExtensions作为参考
我错过了什么?任何帮助都将不胜感激。项目设置为.NET 4.5您可以尝试:
input.Tables.OfType<DataTable>().First().Rows
input.Tables.OfType().First()行
具体地告诉它它属于
DataTable
类型First()
的签名是:
public static TSource First<TSource>(
this IEnumerable<TSource> source
)
您缺少一个
Cast
操作DataTableCollection
未实现IEnumerable
,因此Linq不应用任何通用扩展方法
您可以使用Cast
使其成为通用可枚举项。像这样:
foreach(var row in input.Tables.Cast<DataTable>().First().Rows) {..
foreach(input.Tables.Cast().First().Rows中的var行){。。
我仍然收到相同的错误:(在您的修订之后,它似乎有效。但是为什么在定义类型时它有效?因为表是DataTableCollection类型,它不实现IEnumerable。感谢您的解释!(和L-Three)。
foreach(var row in input.Tables.Cast<DataTable>().First().Rows) {..