2012-10-29 64 views
4

與LINQ和集團對象我嘗試的數據錶轉換成JSON的特殊格式轉換的DataTable通過

數據在數據表中作爲跟隨

col1 col2 col3 col4 
--------------------- 
A B c D1 
A B c D2 
A B c D3 

嘗試將其轉換爲一個對象數組像

class obj { 
var col1; 
var col2; 
var col3; 
list<string> col4; 
} 

我嘗試使用LINQ,但有點卡住了。

var result = from row in dt.AsEnumerable() 
         group row by new 
         { 
          c1 = row["col1"], 
          c2 = row["col2"], 
          c3 = row["col3"] 
         } 
          into section 
          select new 
           { 
            item = section.Key 

           }; 

回答

5
var result = from row in dt.AsEnumerable() 
      group row by new 
      { 
       c1 = r.Field<string>("col1"), 
       c2 = r.Field<string>("col2"), 
       c3 = r.Field<string>("col3") 
      } into section 
      select new 
      { 
       col1 = section.Key.c1, 
       col2 = section.Key.c2, 
       col3 = section.Key.c2, 
       col4 = section.Select(r => r.Field<string>("col4")).ToList() 
      }; 
+2

'COL4 = section.Select(R => r.Field ( 「COL4」))。ToList()'會更好。 –

+0

@TimSchmelter你是對的,謝謝!實際上,對於分組鍵,我們也可以使用Field擴展(假設其他列也有字符串數據) –

+0

感謝您的快速響應! – maxisam