gpt4 book ai didi

c# - 如何在C#中与列表相交?

转载 作者:太空宇宙 更新时间:2023-11-03 17:31:14 25 4
gpt4 key购买 nike

我在c#中具有以下Item对象列表:

public class Item
{
public int Id { get; set; }
public List<string> Orders { get; set; }
}

List<Item> item = new List<Item>() {
new Item() { Id = 1, Code = 23, Orders = new List<string>() { "A", "B" }},
new Item() { Id = 2, Code = 24, Orders = new List<string>() { "C", "D" }},
new Item() { Id = 1, Code = 23, Orders = new List<string>() { "E", "F" }},
new Item() { Id = 3, Code = 25, Orders = new List<string>() { "G", "H" }}
};


我要合并ID相同的Orders,因此上述列表的输出应为:

    { 
new Item() { Id = 1, Code = 23, Orders = new List<string>() { 'A', 'B', 'E', 'F' },
new Item() { Id = 2, Code = 24, Orders = new List<string>() { 'C', 'D' },
new Item() { Id = 3, Code = 25, Orders = new List<string>() { 'G', 'H' }
};


我如何在c#中有效地做到这一点(如果可能,使用linq)?

最佳答案

您要根据项目的ID对项目进行分组,然后根据该组的所有Orders创建新序列。

var query = items.GroupBy(item => item.Id)
.Select(group => new Item
{
Id = group.Key,
Orders = group.SelectMany(item => item.Orders).ToList()
});


请注意,这不是任何数据的交集。您将获得每个组内所有数据的并集。

关于c# - 如何在C#中与列表相交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22817367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com