Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 好像我';我错过了指令?System.Data.DataTableCollection不包含';第一';_C#_Linq - Fatal编程技术网

C# 好像我';我错过了指令?System.Data.DataTableCollection不包含';第一';

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循环

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) {..