Подтвердить что ты не робот

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

Использование linq для запроса данных datatable возвращает следующую ошибку: 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', потому что это не тип делегата

заблаговременно за вашу помощь

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

BTW mapDataTable - это DataTable, правильно?

Ответ 3

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

добавленной

using System.Data;

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

Ответ 4

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

using System.Data;

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

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

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

Ответ 5

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

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

using System.Data.DataSetExtensions;