如何扩展Enumerable 只有一个型参的方法呢?

大家都知道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();

麻烦知道的大神指点一下.

猜你喜欢

转载自blog.csdn.net/phker/article/details/80916803