2012-10-05 14 views
12

aşağıdaki kayıtları vardır "DTHead" adlı bir DataTable, İşteBölünmüş Sütun değerine dayalı 2 veya daha fazla DataTable içine bir DataTable

MIVID  Quantity   Value 
------  ----------  -------- 
    1   10    3000 
    1   20    3500 
    1   15    2000 
    2   20    3000 
    2   50    7500 
    3   25    2000 

var, dayanarak üç tablolarına yukarıdaki DataTable bölmek gerekir MIVID aşağıdaki gibi;

DTChild1:

MIVID   Quantity  Value 
-------   ----------  --------- 
    1    10    3000 
    1    20    3500 
    1    15    2000 

DTChild2:

MIVID   Quantity  Value 
-------   ----------  --------- 
    2    20    3000 
    2    50    7500 

DTChild3: Başlık DataTable 4 farklı MIVID araçlarını içeriyorsa

MIVID   Quantity  Value 
-------   ----------  --------- 
    3    25    2000 

varsayalım, daha sonra 4 Çocuk DataTable oluşturulmalıdır MIVID'ye dayanarak. Bu nasıl yapılır? Gruba

cevap

25

Kullanım LINQ to DataTable ilk GroupBy tarafından sütun ve kullanım yöntemi CopyToDataTable O zaman beklendiği gibi DataTable listesi olarak sonucu alabilirsiniz DataTable

List<DataTable> result = DTHead.AsEnumerable() 
      .GroupBy(row => row.Field<int>("MIVID")) 
      .Select(g => g.CopyToDataTable()) 
      .ToList(); 

satır listeyi kopyalamak için.

+0

Eski bir iş parçacığı kazandığım için özür dilerim, ancak hem MIVID hem de başka bir alan tarafından gruplandırılması gerektiğinde nasıl çalışacağını düşünüyorsunuz? –

+2

@RohithShenoyG: Anonim bir tür kullanabilirsiniz, böyle bir şey: 'GroupBy (row => new {Field1 = satır.Field ('Field1'), Field2 = satır.Field ('Field2')})' –

+0

@ İyi olan Cuong Le, bana çok zaman kazandırdı. Sadece "bunun yerine" olması gerekiyor (burada bir bilge olmaya çalışmayın, açıkçası bunu biliyorsunuzdur, ama muhtemelen "çoklu alan yorumu" nı yazınız) –