我有一个存储的ID列表。我需要根据每个id是否属于某个组来将这些id分组到一个单独的列表组中。例如,在下面的示例中,我想返回:
List<Group1> = {1,2};
List<Group2> = {3,4};
List<Group3> = {5};
现在我有数百个小组,所以我无法真正创建一个小组并向该小组添加项目。那么,我该如何动态创建和返回这些组呢?
List<int> list = new List<int> { 1, 2, 3, 4, 5 };
foreach (int i in list)
{
var x = PersonList.GetById(I); //Returns Person object
var obj = x.GroupBy(y => y.GroupName).ToList();
// where obj is IEnumerable<IGrouping<string,Person>>
// I can get Group1 from Person object
//how to get List<Group2> ...and so on?
}
答案 0 :(得分:0)
你需要这样做
var obj = x.GroupBy(y => y.GroupName); // IEnumerable<IGrouping<string,Person>>
现在,为了获得属于某个组的列表,您需要使用自己的密钥(用于进行分组)检查IGrouping的密钥。
var group2 = obj.Where(g => g.Key == "Group2").SelectMany(g => g).ToList();
答案 1 :(得分:0)
如果您只是希望您的人员成群组,则下面的查询会将它们放入字典中,其中字典的键将是组名称,值将是Person
个对象的列表。
var groups = obj.ToDictionary( t => t.Key, t => t);