C# 使用SortedList进行Linq查询<;int,list<;int>&燃气轮机;

C# 使用SortedList进行Linq查询<;int,list<;int>&燃气轮机;,c#,.net,linq,c#-4.0,linq-to-sql,C#,.net,Linq,C# 4.0,Linq To Sql,我目前正在使用Linq从数据表中检索不同值的列表。然后,我在列表中循环,并再次调用linq查询来检索每个查询的值列表 第一个列表中的值 _keyList = new SortedList<int, List<int>>(); var AUGroupList = ProcessSummaryData.AsEnumerable() .Select(x => x.Field<int>("AUGroupID"))

我目前正在使用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);
}
\u keyList=new SortedList();
var AUGroupList=ProcessSummaryData.AsEnumerable()
.Select(x=>x.Field(“AUGroupID”))
.Distinct()
.ToList();
foreach(AUGroupList中的变量au)
{
var AUList=ProcessSummaryData.AsEnumerable()
其中(x=>x.Field(“AUGroupID”)==au)
.选择(x=>x.Field(“ActivityUnitID”))
.ToList();
_添加(au,AUList);
}
然后将该值与相应的第二个列表一起添加到排序列表中。 如何将上述两个查询合并到一个Linq查询中,以便不必单独调用它们?

您尝试过这个吗

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);
}
var\u keyList=new SortedList();
var AUGroupList=ProcessSummaryData.AsEnumerable()
.Select(x=>x.Field(“AUGroupID”))
.Distinct()
其中(x=>x.Field(“AUGroupID”)==au)
.选择(x=>x.Field(“ActivityUnitID”))
.ToList();
_添加(au,AUList);
}
您的提供商应该解决这个问题,如果没有的话,还有其他一些方法。

您尝试过这个吗

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);
}
var\u keyList=new SortedList();
var AUGroupList=ProcessSummaryData.AsEnumerable()
.Select(x=>x.Field(“AUGroupID”))
.Distinct()
其中(x=>x.Field(“AUGroupID”)==au)
.选择(x=>x.Field(“ActivityUnitID”))
.ToList();
_添加(au,AUList);
}

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

您应该能够做到以下几点:

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() }; 
var groupQuery=来自ProcessSummary.AsEnumerable()中的d
按新的{Key=d.Field(“AUGroupID”)}将d分组到g中
选择新{GroupID=g.Key,Values=g.Distinct().ToList()};

然后,您可以循环通过
groupQuery
并填充排序列表。
属性将包含组id,
属性将有一个不同的值列表。

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

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() }; 
var groupQuery=来自ProcessSummary.AsEnumerable()中的d
按新的{Key=d.Field(“AUGroupID”)}将d分组到g中
选择新{GroupID=g.Key,Values=g.Distinct().ToList()};

然后,您可以循环通过
groupQuery
并填充排序列表。
属性将包含组id,
属性将有一个不同的值列表。

非常感谢!!很有魅力。非常感谢!!工作起来很有魅力。