2012-05-15 28 views
5

Ben bu koduLINQ'da özel sütun nasıl seçilir?

ds.Table[0].AsEnumerable().Where<DataRow>(r=>r.Field<int>("productID")==23).CopyToDataTable(); 

~

kullanıyorum Ama bu bana tüm sütunları veriyor benim DataTable kullanarak linq belirli sütunu seçmek zorunda ve sadece PRODUCTNAME, TANIMI, FİYAT ihtiyaç

Bu sorguyu nasıl yazabilirim?

cevap

4

istediğiniz tüm alanları almak için anonim bir tür projeksiyon kullanabilirsiniz @lazyberezovsky üzerinde biraz genişletmek için ve fiyat alanları, yani bunları değiştirmek zorunda kalacaksınız.

+0

'u seçmem gerekiyor. Teşekkürler. Soru sorumu aldım ve cevabım sorumun cevabı. Bir alanı nasıl göstereceğimi biliyorum ama nasıl göstereceğimi bilmiyorum. – user1390378

6

Kullanım Seç yöntemi:

ds.Table[0].AsEnumerable() 
      .Where<DataRow>(r=>r.Field<int>("productID")==23) 
      .Select(r => r.Field<int>("productID")); 

GÜNCELLEME: Eğer anonim türünü dönebilirsiniz, birkaç sütunları seçmek gerekir:

var query = from row in dt.ds.Table[0].AsEnumerable() 
      where row.Field<int>("productID")==23 
      select new { 
          ProductID = x.Field<string>("productID"), 
          Foo = x.Field<string>("foo") 
         }; 

kopyalamak gerekiyorsa yeni tabloya veri, Sorunla karşılaşacaksınız (CopyToDataTable, DataRow nesnelerinin toplanmasını gerektirir). Bu sorunu çözmek için How to: Implement CopyToDataTable Where the Generic Type T Is Not a DataRow'a bakın. ,

ds.Table[0].AsEnumerable() 
    .Where<DataRow>(r => r.Field<int>("productID") == 23) 
    .Select(r => new { ProductName = r.Field<string>("productName"), 
         Description = r.Field<string>("description"), 
         Price = r.Field<decimal>("price") }); 

ne adını biliyor ve ürün adı, açıklaması yazmayın:

+0

Bununla ilgili olarak sadece bir sütun seçebilirim ama 3 – user1390378

İlgili konular