C# GroupJoin 2个对象集合List 多字段相同
在C#中,可以使用GroupJoin方法将两个对象集合(List)根据多个字段相同进行连接。以下是一个示例代码:
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
// 创建两个对象集合
List<Person> persons = new List<Person>()
{
new Person { Id = 1, Name = "John" },
new Person { Id = 2, Name = "Alice" },
new Person { Id = 3, Name = "Bob" }
};
List<Order> orders = new List<Order>()
{
new Order { PersonId = 1, OrderNumber = "A001" },
new Order { PersonId = 1, OrderNumber = "A002" },
new Order { PersonId = 2, OrderNumber = "B001" },
new Order { PersonId = 3, OrderNumber = "C001" }
};
// 使用GroupJoin方法连接两个对象集合
var result = persons.GroupJoin(
orders,
person => person.Id,
order => order.PersonId,
(person, orderGroup) => new
{
Person = person,
Orders = orderGroup
});
// 输出结果
foreach (var item in result)
{
Console.WriteLine($"Person: {item.Person.Name}");
Console.WriteLine("Orders:");
foreach (var order in item.Orders)
{
Console.WriteLine($"- {order.OrderNumber}");
}
Console.WriteLine();
}
}
}
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
class Order
{
public int PersonId { get; set; }
public string OrderNumber { get; set; }
}
上述代码中,我们创建了两个对象集合persons和orders,分别代表人员和订单。然后,我们使用GroupJoin方法将这两个对象集合根据PersonId字段进行连接。最后,我们遍历连接结果并输出每个人员及其对应的订单。
输出结果如下:
Person: John
Orders:
- A001
- A002
Person: Alice
Orders:
- B001
Person: Bob
Orders:
- C001
可以看到,连接结果正确地将每个人员与其对应的订单进行了分组
原文地址: http://www.cveoy.top/t/topic/i0Iz 著作权归作者所有。请勿转载和采集!