以下是一个使用LINQ的解决方案,它按照共同的用户ID将两个列表分组:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
List users1 = new List
{
new User { UserID = 1, Name = "User1" },
new User { UserID = 2, Name = "User2" },
new User { UserID = 3, Name = "User3" }
};
List users2 = new List
{
new User { UserID = 1, Name = "User1" },
new User { UserID = 3, Name = "User3" },
new User { UserID = 4, Name = "User4" }
};
var groupedUsers = users1.Concat(users2) // 合并两个列表
.GroupBy(u => u.UserID) // 按照用户ID分组
.Select(g => new
{
UserID = g.Key,
Users = g.ToList()
});
foreach (var group in groupedUsers)
{
Console.WriteLine("Group: " + group.UserID);
foreach (var user in group.Users)
{
Console.WriteLine(user.Name);
}
Console.WriteLine();
}
}
}
class User
{
public int UserID { get; set; }
public string Name { get; set; }
}
这段代码首先创建了两个包含User对象的列表(users1和users2)。然后,使用Concat方法将这两个列表合并为一个列表。
接下来,使用GroupBy方法按照User对象的UserID属性进行分组。这将返回一个包含多个IGrouping
最后,使用Select方法将每个分组转换为一个匿名类型对象,其中包含UserID和Users属性。Users属性是一个包含该分组中所有User对象的列表。
最后,我们遍历分组并打印结果。
这将输出:
Group: 1
User1
User1
Group: 2
User2
Group: 3
User3
User3
Group: 4
User4
上一篇:按照共同的人对递归循环进行分组
下一篇:按照共同键总结JSON数组项