2010-10-16 2 views
28

Я совершенно новый для LINQ и пытаюсь запросить у него DataSet. Поэтому я последовал за письмом this example, и он не работает.LINQ to DataSet, DataTable.AsEnumerable() не распознается

Я знаю, что мой DataTable нуждается в .AsEnumerable на конце, но он не распознается IDE. Что я делаю не так? Мне не хватает ссылки/импорта, которая не показана в примере (не первый раз, когда пример MSDN был не совсем прав), и если да, то какой? Или это совсем другое?

Пример кода:

Imports System 
Imports System.Linq 
Imports System.Linq.Expressions 
Imports System.Collections.Generic 
Imports System.Data 
Imports System.Data.SqlClient 
Imports System.Data.Common 
Imports System.Globalization 


//Fill the DataSet. 
Dim ds As New DataSet() 
ds.Locale = CultureInfo.InvariantCulture 
//See the FillDataSet method in the Loading Data Into a DataSet topic. 
FillDataSet(ds) 

Dim products As DataTable = ds.Tables("Product") 

Dim query = From product In products.AsEnumerable() _ 
      Select product 
Console.WriteLine("Product Names:") 
For Each p In query 
    Console.WriteLine(p.Field(Of String)("Name")) 
Next 

ссылки в моем проекте являются:

System 
System.Data 
System.Drawing 
System.Windows.Forms 
System.Xml 

ответ

74

Хотя класс проведения расширений находится в System.Data пространства имен, он находится в сборке, не добавляются в ваш проект по умолчанию. Добавьте ссылку на System.Data.DataSetExtensions в свой проект, и все должно быть в порядке. Помните, что даже после добавления ссылки любой класс, который ожидает использовать методы расширения, определенные в классе, должен также иметь инструкцию using для System.Data.

+0

Спасибо, что работает сейчас! Я разрывал волосы на этом. :) +1 всем для System.Data.DataSetExtensions, но вы получите «accept» для лучшего объяснения. Еще раз спасибо. – GSTD

+0

Почему все еще есть необходимость добавить оператор using, даже если он уже включен в ссылки проекта? – Charmie

+0

@Charmie оператор 'using' делает пространство имен доступным в файле/классе. Поскольку это метод расширения, вы не можете ссылаться на него, используя полное пространство имен (при использовании в качестве расширения), и поэтому должно быть включено пространство имен. – tvanfosson

8

Я думаю, что вам может понадобиться, чтобы добавить System.Data.DataSetExtensions Ссылка на ваш проект до AsEnumerable будет работать.

5

вам нужна ссылка на System.Data.DataSetExtensions

Смежные вопросы