在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; }
}

上述代码中,我们创建了两个对象集合personsorders,分别代表人员和订单。然后,我们使用GroupJoin方法将这两个对象集合根据PersonId字段进行连接。最后,我们遍历连接结果并输出每个人员及其对应的订单。

输出结果如下:

Person: John
Orders:
- A001
- A002

Person: Alice
Orders:
- B001

Person: Bob
Orders:
- C001

可以看到,连接结果正确地将每个人员与其对应的订单进行了分组

C# GroupJoin 2个对象集合List 多字段相同

原文地址: http://www.cveoy.top/t/topic/i0Iz 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录