DataTable не содержит определения для AsEnumerable - PullRequest
36 голосов
/ 09 февраля 2012

Использование linq для запроса таблицы данных возвращает следующую ошибку: CS0117: «DataSet1.map DataTable» не содержит определения «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: Невозможно преобразовать лямбда-выражение в тип 'string', поскольку оно не является типом делегата

заранее спасибо за помощь

Ответы [ 5 ]

71 голосов
/ 09 февраля 2012

Требуемый метод находится в пространстве имен System.Data, поэтому директива using подходит, но вам также нужна ссылка на сборку System.Data.DataSetExtensions . Вы уверены , что у вас есть эта ссылка как сборка ссылка?

Непонятно, почему у вас есть директива using для пространства имен System.Data.DataSetExtensions - разве это не вызывает ошибку?

Какая именно ошибка при вызове AsEnumerable()? (Я удивлен ошибкой, которую вы получаете со второй формой ... это не та ошибка, которую я ожидал.)

11 голосов
/ 09 февраля 2012

Во всех случаях, когда это происходит, ссылка на System.Data.DataSetExtensions.dll отсутствовала.Если вы сомневаетесь, попробуйте создать простой консольный проект для .NET 4 со ссылкой на System.Data.DataSetExtensions.dll, чтобы убедиться, что добавление ссылки действительно работает.

Также обратите внимание, что вам нужно использовать толькоПространство имен System.Data.

Кстати, mapDataTable - это DataTable, верно?

6 голосов
/ 29 августа 2018

enter image description here Я получил это сообщение об ошибке: «System.Data.DataTable» не содержит определения «AsEnumerable», и метод расширения «AsEnumerable», принимающий первый аргумент типа «System.Data.DataTable», не найден (отсутствует директива using или ссылка на сборку ?)

Добавлена ​​

using System.Data;

Добавлено раздел «System.Data.DataSetExtensions» в разделе «Ссылки». Это решило проблему.

2 голосов
/ 08 января 2016

Поиск Google "system.data.datatable не содержит определения для asenumerable" привел меня сюда, и моя проблема пропала:

using System.Data;

Из-за моей машины сообщение об ошибке немного вводило в заблуждение. Отсюда мой ответ на этот вопрос. Код был как ...

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

Как только я попытался явно объявить DataTable, стало очевидно, что я пропустил оператор using.

0 голосов
/ 04 июня 2019

Добавить System.Data.DataSetExtensions из " nuget " или " добавить ссылку "

Добавить этот код:

using System.Data.DataSetExtensions;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...