可以使用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 2个对象集合List 同时连接4个字段

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

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