我想知道有什么方法可以使用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?