多个列表的linq内部联接扩展(通用方式)

问题描述 投票:0回答:1

我想知道有什么方法可以使用Linq(通用方法)来加入多个列表。

我只是创建了一个加入2个列表的通用方法

public static T Merge<T>(T List1, T List2) where T : new()
        {
            var properties = typeof(T)
                .GetProperties()
                .Where(p => p.CanRead && p.CanWrite && !p.GetIndexParameters().Any());

            T result = new T();

            foreach (var prop in properties)
            {
                object value = prop.GetValue(List1) ?? prop.GetValue(List2);
                prop.SetValue(result, value);
            }

            return result;
        }

List<student> _List1 = List1.Cast<student>().ToList();
List<student> _List2 = List2.Cast<student>().ToList();
var mergedlist = from a in _List1
    join b in _List2
    on a.stid equals b.stid 
    select Merge(a, b);

样本数据

public class Person
    {
        public int ID { get; set; }
        public string Name { get; set; }
        public int IdAddress { get; set; }
        public Person(int ID, string Name,int IdAddress)
        {
            this.IdAddress = IdAddress;
            this.Name = Name;
            this.ID = ID;
        }
    }

public class Address
{
    public int IdAddress { get; set; }
    public string Street { get; set; }
    public Address( int IdAddress,string Street)
    {
        this.IdAddress = IdAddress;
        this.Street = Street;
    }
}

输入

List<Person> _List1 = person list
List<Address> _List2 = address list
var List<List<TModel>>groupedList=new List<List<TModel>>();
groupedList.add(_List1);
groupedList.add(_List2);

var Result= Merge(groupedList,/*Grouping condition*/,/*resultsetdetails*/);

但是我需要将多个List列表传递给Merge函数。如何实现?

如何使用TModel?

c# asp.net asp.net-mvc linq inner-join
1个回答
0
投票
我只是创建了一个加入2个列表的通用方法
© www.soinside.com 2019 - 2024. All rights reserved.