2010-10-16 11 views
28

LINQ numaralı telefon için yeni ve DataSet numaralı telefonumu sorgulamaya çalışıyorum. Bu yüzden this example harfini takip ettim ve işe yaramadı.DataSet'e LINQ, DataTable.AsEnumerable() tanınmayan

DataTable numaramın .AsEnumerable sonuna ihtiyacı olduğunu biliyorum, ancak IDE tarafından tanınmıyor. Neyi yanlış yapıyorum? Örnekte gösterilmeyen bir referans/içe aktarımı kaçırmıyorum (bir MSDN örneğinin ilk defa doğru olması gerekmez) ve eğer öyleyse hangisi? Yoksa tamamen başka bir şey mi?

Örnek Kod: Projemdeki

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 

Kaynaklar şunlardır:

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

cevap

74

bir başvuru gerekiyor. Projenize System.Data.DataSetExtensions referans ekleyin ve tamam olması gerekir. Referansı ekledikten sonra bile, sınıfta tanımlanan uzantı yöntemlerini kullanmayı uman herhangi bir sınıfın System.Data için de bir kullanım ifadesine sahip olması gerektiğini unutmayın.

+0

Teşekkürler, bu şimdi çalışıyor! Bu saçlarımı yırttıyorum. :) System.Data.DataSetExtensions için herkese +1, ancak daha iyi bir açıklama için 'kabul' alırsınız. Tekrar teşekkürler. – GSTD

+0

Niçin hala projenin referanslarına dahil edilmiş olsa bile bir kullanım ifadesi eklemeniz gerekiyor? – Charmie

+0

@Charmie 'using' ifadesi, ad alanını dosya/sınıfta kullanılabilir hale getirir. Bir uzantı yöntemi olduğundan, tam ad alanını (bir uzantı olarak kullanıldığında) kullanarak başvuruda bulunamazsınız ve böylece ad alanının dahil edilmiş olması gerekir. – tvanfosson

8

Sana AsEnumerable çalışacaktır önce projenize System.Data.DataSetExtensions Referans eklemeniz gerekebilir düşünüyorum. uzantıları tutan sınıf System.Data ad iken

5

bunu varsayılan olarak projeye eklenen olmayan bir mecliste bulunur, System.Data.DataSetExtensions