44

使用 linq 查询数据表返回以下错误:CS0117: 'DataSet1.map DataTable' does not contain a definition for 'AsEnumerable'

项目包括 System.Data.Datasetextensions 的参考。

这是代码。

using System;
using System.Collections;
using System.ComponentModel;
using System.Configuration;
using System.Reflection;
using System.Data;
using System.Linq;
using System.Data.Linq;
using System.Data.Common;
using System.Data.DataSetExtensions;
using System.Linq.Expressions;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using System.Data.SqlClient;

protected void Page_Load(object sender, EventArgs e)
    {
        var query1 = from mfg_nm in DataSet1.mapDataTable.AsEnumerable()

                     select mfg_nm;
}

在没有 AsEnumerable() 的情况下运行它会导致

var query1 = from mfg_nm in DataSet1.mapDataTable

                     select mfg_nm;

CS1660:无法将 lambda 表达式转换为类型“字符串”,因为它不是委托类型

在此先感谢您的帮助

4

6 回答 6

80

您想要的方法在System.Data命名空间中,因此该using指令很好,但您还需要对System.Data.DataSetExtensions assembly的引用。您确定您已将该参考作为程序集参考吗?

不清楚为什么你有一个System.Data.DataSetExtensions 命名空间的 using 指令——这不会引发错误吗?

调用的确切错误是AsEnumerable()什么?(我对您在第二种形式中遇到的错误感到惊讶......这不是我所期望的错误。)

于 2012-02-09T19:21:00.927 回答
26

从“ nuget ”或“添加引用”添加System.Data.DataSetExtensions

添加此代码:

using System.Data.DataSetExtensions;
于 2019-06-04T06:49:10.553 回答
16

在发生这种情况的所有情况下,都缺少对 System.Data.DataSetExtensions.dll 的引用。如果有疑问,请尝试创建一个针对 .NET 4 并引用 System.Data.DataSetExtensions.dll 的简单控制台项目,以验证添加该引用是否确实有效。

另请注意,您只需要使用 System.Data 命名空间。

BTW mapDataTable 是一个DataTable,对吧?

于 2012-02-09T19:27:16.787 回答
14

在此处输入图像描述我收到此错误消息:“System.Data.DataTable”不包含“AsEnumerable”的定义,并且找不到接受“System.Data.DataTable”类型的第一个参数的扩展方法“AsEnumerable”(您是否缺少使用指令还是程序集引用?)

添加

using System.Data;

在参考部分添加了“System.Data.DataSetExtensions”。它解决了这个问题。

于 2018-08-29T08:44:12.557 回答
2

谷歌搜索“system.data.datatable 不包含asenumerable 的定义”把我带到了这里,我的麻烦不见了:

using System.Data;

由于我的实施,错误消息有点误导。因此,我对这个问题的回答。代码就像...

public List<mytype> MyMethod(params) {
   return new mynamespace.myclasslib.myclass().GetDataTable(params).AsEnumerable()
      .etc
}

一旦我尝试显式声明 DataTable,很明显我错过了 using 语句。

于 2016-01-08T16:05:06.990 回答
1

试试这个代码:

DataSet1.mapDataTable.Select().AsEnumerable()

于 2020-07-17T07:21:14.803 回答