LINQ to DataSet,DataTable.AsEnumerable() 无法识别

Posted

技术标签:

【中文标题】LINQ to DataSet,DataTable.AsEnumerable() 无法识别【英文标题】:LINQ to DataSet, DataTable.AsEnumerable() not recognized 【发布时间】:2011-04-26 08:17:28 【问题描述】:

我是LINQ 的新手,我正在尝试用它查询我的DataSet。所以我跟着this example 信了,但它不起作用。

我知道我的DataTable最后需要.AsEnumerable,但IDE无法识别。我究竟做错了什么?我是否遗漏了示例中未显示的引用/导入(不会是第一次 MSDN 示例不太正确),如果是,是哪一个?还是完全是别的东西?

示例代码:

Imports System
Imports System.Linq
Imports System.Linq.Expressions
Imports System.Collections.Generic
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.Common
Imports System.Globalization


//Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
//See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)

Dim products As DataTable = ds.Tables("Product")

Dim query = From product In products.AsEnumerable() _
            Select product
Console.WriteLine("Product Names:")
For Each p In query
    Console.WriteLine(p.Field(Of String)("Name"))
Next

我的项目中的引用是:

System
System.Data
System.Drawing
System.Windows.Forms
System.Xml

【问题讨论】:

【参考方案1】:

虽然包含扩展的类位于 System.Data 命名空间中,但它位于默认情况下未添加到项目中的程序集中。在您的项目中添加对System.Data.DataSetExtensions 的引用,应该没问题。请记住,即使在您添加了引用之后,任何希望使用该类中定义的扩展方法的类也需要具有 System.Data 的 using 语句。

【讨论】:

谢谢,现在可以了!我一直在扯这个头发。 :) 为 System.Data.DataSetExtensions 向所有人 +1,但您会得到“接受”以获得更好的解释。再次感谢。 为什么项目的引用中已经包含了using语句,为什么还要添加using语句? @Charmie using 语句使命名空间在文件/类中可用。因为它是一种扩展方法,所以您不能使用完整的命名空间(用作扩展时)引用它,因此必须包含命名空间。 我已将程序集引用添加到 System.Data.DataSetExtensions (C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Data.DataSetExtensions.dll ) 并拥有必要的using System.Datausing System.Data.DataSetExtensions,但我收到错误消息“名称空间'System.Data' 中不存在类型或名称空间名称'DataSetExtensions'(您是否缺少程序集引用?) "【参考方案2】:

我认为您可能需要在AsEnumerable 工作之前将System.Data.DataSetExtensions 引用添加到您的项目。

【讨论】:

【参考方案3】:

您需要参考System.Data.DataSetExtensions

【讨论】:

以上是关于LINQ to DataSet,DataTable.AsEnumerable() 无法识别的主要内容,如果未能解决你的问题,请参考以下文章

Linq&Lumda---LINQ to DataSet的DataTable操作

LINQ to DataSet

LINQ(LINQ to DataSet)

LINQ to DataSet 之单表查询

2016.1.22 利用LINQ实现DataSet内多张DataTable关联查询操作(目前未发现太大价值)

LinQ To DataSet