从DataTable返回Dictionary <string,list <string>和Linq

时间:2017-03-10 09:30:03

标签: c# linq dictionary group-by

我是LINQ中的新用户我希望将来自DataTable的数据与特定列field1值进行分组

喜欢这个Dictionary<string,List <row>>

我试过这段代码

  var results = from e in data.AsEnumerable()
                group e by e.Field<string>("field1") into g
                select new {  e.Field<string>("field1"), g.ToList() } ;

我不想用foreach语句

执行此操作

我这样做,我想用LINQ

foreach (DataRow row in data.Rows)
{
    string field1Val = row.Filed<string>("field1");

    if (!sotrtedResult.ContainsKey(field1Val ))
    {
        sotrtedResult.Add(field1Val , new List<DataRow>() { row });
    }
    else
    {
        sotrtedResult[field1Val].Add(row);
    }
}

1 个答案:

答案 0 :(得分:1)

您可以尝试以下代码段:

var results = (from e in data.AsEnumerable()
              group e by e.Field<string>("field1") into g
              select new 
              {  
                  field1 = g.Key, 
                  values = g.Select(r=>r).ToList() 
              }).ToDictionary(x=>x.field1, x=>x.values);

当您按字段进行分组时,可以在将投影设为g.Key时访问该字段。