可以使用 GroupJoin 方法将两个对象集合连接在一起,并且可以连接多个字段。以下是一个示例代码:

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 = 'Jane' },
            new Person { Id = 3, Name = 'Mike' }
        };

        List<Order> orders = new List<Order>()
        {
            new Order { PersonId = 1, OrderId = 100, Product = 'Product1', Quantity = 1 },
            new Order { PersonId = 1, OrderId = 101, Product = 'Product2', Quantity = 2 },
            new Order { PersonId = 2, OrderId = 102, Product = 'Product3', Quantity = 3 },
            new Order { PersonId = 3, OrderId = 103, Product = 'Product4', Quantity = 4 }
        };

        var result = persons.GroupJoin(orders,
            person => person.Id,
            order => order.PersonId,
            (person, orderGroup) => new
            {
                person.Id,
                person.Name,
                Orders = orderGroup.Select(order => new
                {
                    order.OrderId,
                    order.Product,
                    order.Quantity
                })
            });

        foreach (var item in result)
        {
            Console.WriteLine($'Person Id: {item.Id}');
            Console.WriteLine($'Person Name: {item.Name}');
            Console.WriteLine('Orders:');
            foreach (var order in item.Orders)
            {
                Console.WriteLine($'Order Id: {order.OrderId}');
                Console.WriteLine($'Product: {order.Product}');
                Console.WriteLine($'Quantity: {order.Quantity}');
            }
            Console.WriteLine();
        }
    }
}

class Person
{
    public int Id { get; set; }
    public string Name { get; set; }
}

class Order
{
    public int PersonId { get; set; }
    public int OrderId { get; set; }
    public string Product { get; set; }
    public int Quantity { get; set; }
}

在上面的示例中,我们有两个对象集合personsorders,我们通过PersonId和Id字段将它们连接在一起。最后的结果是一个匿名类型对象,包含Person的Id、Name和Orders属性。Orders属性是一个集合,包含与每个人关联的订单信息。

C# GroupJoin: 连接两个对象集合并关联多个字段

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

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