【问题标题】:Linq query to with SortedList<int,list<int>>使用 SortedList<int,list<int>> 进行 Linq 查询
【发布时间】:2012-11-21 02:01:37
【问题描述】:

我目前正在使用 Linq 从我的数据表中检索不同值的列表。然后我遍历列表并再次调用 linq 查询来检索每个值的列表 第一个列表中的值。

_keyList = new SortedList<int, List<int>>();
var AUGroupList = ProcessSummaryData.AsEnumerable()
                  .Select(x => x.Field<int>("AUGroupID"))
                  .Distinct()
                  .ToList<int>();
foreach (var au in AUGroupList)
{
    var AUList = ProcessSummaryData.AsEnumerable()
                      .Where(x => x.Field<int>("AUGroupID") == au)
                      .Select(x => x.Field<int>("ActivityUnitID"))
                      .ToList<int>();
    _keyList.Add(au, AUList);
}

然后我将该值与相应的第二个列表一起添加到排序列表中。 如何将上述两个查询合并为一个 Linq 查询,这样我就不必单独调用它们了?

【问题讨论】:

    标签: c# .net linq c#-4.0 linq-to-sql


    【解决方案1】:

    您应该能够执行以下操作:

    var groupQuery = from d in ProcessSummary.AsEnumerable()
                     group d by new { Key = d.Field<int>("AUGroupID") } into g
                     select new { GroupID = g.Key, Values = g.Distinct().ToList() }; 
    

    然后您可以遍历groupQuery 并填充排序列表。 Key 属性将包含组 ID,Values 属性将具有不同的值列表。

    【讨论】:

    • 非常感谢!!像魅力一样工作。
    【解决方案2】:

    你试过了吗?

    var _keyList = new SortedList<int, List<int>>();
    var AUGroupList = ProcessSummaryData.AsEnumerable()
                      .Select(x => x.Field<int>("AUGroupID"))
                      .Distinct()
                         .Where(x => x.Field<int>("AUGroupID") == au)
                         .Select(x => x.Field<int>("ActivityUnitID"))
                         .ToList<int>();
        _keyList.Add(au, AUList);
    }
    

    您的提供商应该可以解决这个问题,如果没有,还有其他一些方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多