2011-11-29 67 views
0

我正在使用LINQ來操作數據表。我有3列 - 我想分組一個,然後一起選擇剩下的2列。目前我有這樣的東西選擇相關對LINQ

var query = reportDataTable.AsEnumerable() 
      .GroupBy(c => c["Code"]) 
      .Select(g => 
        new { 
        Code = g.Key, 
        Rank = g.Select(f => new 
             { f["rank"], 
             f["Name"]}).ToArray() 
        }); 

但我得到的問題,由於匿名類型。我知道如果我可以直接引用列標題(例如列表或w/e),則此語法將起作用。我怎樣才能解決這與DataTables?乾杯。

編輯:

嗯,我想以後能夠引用字段,當我來到了數據填充到一個不同的數據表:

  foreach (var q in query) 
     { 
      DataRow df = dp.NewRow(); 
      df["Code"] = q.Code; 

      foreach (var rank in q.Rank) 
      { 
       df[rank.name] = rank.rank; 
      } 
      dp.Rows.Add(df); 
     } 

回答

0

定義Rank領域,此外,如果你有一個類,調用相關類的構造函數, 你可以在ToArray之前的下面的代碼中看到這個。

var query = reportDataTable.AsEnumerable() 
      .GroupBy(c => c["Code"]) 
      .Select(g => 
       new { Code = g.Key, Rank = 
        g.Select(f => new { rank = f["rank"], name = f["Name"]}) 
       .ToArray() }); 
+0

@Oded,你讀過我的代碼而不是downvoting了嗎? –

+0

事實上,OP當前的代碼不應該能夠編譯 –

+0

讓我們[在聊天中繼續討論](http://chat.stackoverflow.com/rooms/5441/discussion-between-saeed-amiri-and-oded) –