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()