0

我目前正在使用 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 查询,这样我就不必单独调用它们了?

4

2 回答 2

2

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

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属性将具有不同的值列表。

于 2012-11-21T02:30:56.387 回答
1

你试过这个吗?

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

您的提供者应该处理这个问题,如果没有,还有其他一些方法。

于 2012-11-21T02:24:08.603 回答