大家都知道EF 的代码 写的时候很方便,
TAble1s.Where(a=>a....).ToList()
这个Where是静态扩展方法.
我照着这个扩展了另外一个MapTo做复制用的.
可是用的时候, 如论如何要必须传2个型参,
微软的Where是怎么做到扩展做到的第一个型参不用传的 ?
我的代码如下.
public static class ExtensionEnumerable
{
/// <summary>
/// 快速把一个类的数据转换成另外一个类的数据.属性名相同的会复制过去. 只能用在LinqToObject
/// </summary>
/// <typeparam name="TSource"></typeparam>
/// <typeparam name="TResult"></typeparam>
/// <param name="source"></param>
/// <returns></returns>
public static IEnumerable<TResult> MapTo<TSource,TResult>(this IEnumerable<TSource> source )
{
return source.Select(a => Common.FastCopyObject<TSource,TResult>.CopyToNew(a));
}
}
reportModel.Details = DB.Set<WReportDetail>()
.AsNoTracking()
.Where(a => a.ReportId == data.Id && a.TestItemType != 2 && a.TestItemType != 4)
.OrderBy(a => a.SortCode)
.ToList()
//我就想把签名这个型参 WReportDetail 去掉. 上面Where可以不填理论上应该也可以不填.
.MapTo<WReportDetail, ReportDataDetail>()
.ToList();
麻烦知道的大神指点一下.