我目前正在使用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查询中,以便我不必单独调用它们?
答案 0 :(得分: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
属性将具有不同的值列表。
答案 1 :(得分: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);
}
您的提供商应该应对这种情况,如果不是,还有其他一些方法。