2011-11-29 68 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) –