我知道我可以使用投影将两种对象类型映射到 LINQ,如下所示:
var destModel = from m in sourceModel
select new DestModelType {A = m.A, C = m.C, E = m.E}
在哪里
class SourceModelType
{
string A {get; set;}
string B {get; set;}
string C {get; set;}
string D {get; set;}
string E {get; set;}
}
class DestModelType
{
string A {get; set;}
string C {get; set;}
string E {get; set;}
}
但是,如果我想制作类似泛型的东西来做到这一点,我不具体知道我正在处理的两种类型。所以它会走“Dest”类型并与匹配的“Source”类型匹配..这可能吗?此外,为了实现延迟执行,我希望它只返回一个 IQueryable。
例如:
public IQueryable<TDest> ProjectionMap<TSource, TDest>(IQueryable<TSource> sourceModel)
{
// dynamically build the LINQ projection based on the properties in TDest
// return the IQueryable containing the constructed projection
}
我知道这是具有挑战性的,但我希望不是不可能,因为它会为我节省大量模型和视图模型之间的显式映射工作。