2008-10-25 11 views
57

ben bir DataTable Sütunlar mülkiyet basit LINQ sorgusu gerçekleştirmek için çalışıyorum ile:Sorgulama DataColumnCollection LINQ

bir bulunamadı: Ancak

from c in myDataTable.Columns.AsQueryable() 
    select c.ColumnName 

, ne olsun bu kaynak türü 'System.Linq.IQueryable' için sorgu modelinin uygulanması. 'Seç' bulunamadı. 'C' aralık değişkeninin türünü açıkça belirtin.

DataColumnCollection'ı LINQ ile nasıl daha iyi oynayabilirim?

cevap

100

nereden: Ayrıca kullanabilirsiniz

var x = from c in dt.Columns.Cast<DataColumn>() 
     select c.ColumnName; 
+2

@Dave: Bu sorunu en başta neden getiren nedir? Neden Cast() yapmak zorundayız? –

+16

Çünkü dt.Columns bir IEnumerable değil, bir IEnumerable değil. Bu, sınıfın biraz daha eski olması ve yeni jenerik türünü uygulamamasının bir işlevi. Yayınla <>(), uzantı yöntemlerinin tanımlandığı IEnumerable 'a gönderilir. –

12

:

var x = from DataColumn c in myDataTable.Columns 
     select c.ColumnName 

etkin bir Dave'in koduyla aynı yapacağız: "Bir sorgu ifadesinde, bir açık daktilo yineleme değişkeni bir çevirir Enumerable.Cast<TResult> Method MSDN makalesine göre, Cast (IEnumerable) "çağrısı.