2012-10-01 71 views
1

我有一些問題,不知道該怎麼辦,有人可以幫我嗎? 我有一個這樣的表:使用linq分組結果

ID Name Produkt Comment aa bb 
1 Mike AA   YY  x 
1 Mike AA   YY    x 

我想使用LINQ組的結果想有邁克只是在一行

1 Mike AA   YY  x  x 

我的代碼:

var results = from t1 in table.AsEnumerable() 
         join tb2 in table2.AsEnumerable() 
         on t1.Field<string>("Name") equals tb2.Field<string>("Name") into prodGroup 
         from table4 in prodGroup.DefaultIfEmpty() 

         select new 
         { 
          ID = t1.Field<Int32?>("ID"), 
          Name = t1.Field<String>("Name"), 
          Produkt = t1.Field<String>("Produkt"), 
          Attribute = t1.Field<String>("Attribute"), 
          Comment = table4 != null ? table4.Field<String>("Comment") : null, 

         }; 
foreach (var r in results) 
{ 
    var productIndex = result.Columns.IndexOf(r.Attribute); 
    var vals = new List<object>() { r.ID, r.Name, r.Produkt, r.Comment }; 
    for (int i = 4; i < result.Columns.Count; i++) 
    { 
     if (i == productIndex) 
     { 
      vals.Add(true); 

     } 
     else 
     { 
      vals.Add(false); 
     } 
    } 
    result.LoadDataRow(vals.ToArray(), true); 
} 
+0

爲什麼你這樣做是,你使用'合併'方法? –

回答

1

嘗試這個:

var result = from t1 in table.AsEnumerable() 
       group t1 by t1.Name into t1group 
       select new 
       { 
        Name = t1group.FirstOrDefault().Name 
        ,ID = t1group.FirstOrDefault().ID 
        ,Product = t1group.FirstOrDefault().Product 
        ,Comment = t1group.FirstOrDefault().Comment 
        ,aa = (t1group.Select(x => x.aa??"" + x.bb??"")).Aggregate((a, b) => (a + ", " + b)) 
       };