【问题标题】:Returning Dictionary <string,List<string> with Linq from DataTable从 DataTable 中使用 Linq 返回 Dictionary <string,List<string>
【发布时间】:2017-03-10 09:30:03
【问题描述】:

我是LINQ 的新手,我想将DataTable 中的数据与特定列field1 值分组

点赞Dictionary&lt;string,List &lt;row&gt;&gt;

我试过这段代码

  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);
    }
}

【问题讨论】:

    标签: c# linq dictionary group-by


    【解决方案1】:

    你可以试试下面的sn-p:

    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

    【讨论】:

    • 感谢您的提示。我想存储 DataRow 而不是特定字段。我用foreach更新了我的帖子检查我的表现如何@
    • 不客气。请通过更新检查。请注意,您的字典现在将不是标题中提到的Dictionary&lt;string, List&lt;string&gt;,而是Dictionary&lt;string, List&lt;DataRow&gt;
    • 谢谢它工作正常。我必须参加一些关于 Linq 的课程,我认为它是一个强大的工具 :) 你是对的,我的标题弄错了
    • 不客气! LINQ 很棒。一点问题都没有:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-04
    相关资源
    最近更新 更多