DataTable не содержит определения для AsEnumerable

Использование 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', потому что это не тип делегата

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

4 ответа

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

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

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

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

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

using System.Data.DataSetExtensions;

Я получил это сообщение об ошибке: "System.Data.DataTable" не содержит определения для "AsEnumerable", и не удалось найти метод расширения "AsEnumerable", принимающий первый аргумент типа "System.Data.DataTable" (вы пропустили используя директиву или ссылку на сборку?)

добавленной

using System.Data;

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

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

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

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

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

using System.Data;

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

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

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

Попробуйте этот код:

DataSet1.mapDataTable.Select().AsEnumerable()

Другие вопросы по тегам