首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

UnaryExpression跟Expression.Quote

2013-07-20 
UnaryExpression和Expression.Quote本帖最后由 z1101385391 于 2013-07-13 21:51:26 编辑public static IQ

UnaryExpression和Expression.Quote
本帖最后由 z1101385391 于 2013-07-13 21:51:26 编辑


public static IQueryable<TSource> Count<TSource,TKey>(this IQueryable<TSource> source
, Expression<Func<TSource,TKey>> keySelector)
        {
            return source.Provider.CreateQuery<TSource>(Expression.Call(null
,((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new Type[] { typeof(TSource)
, typeof(TKey) })
, new Expression[] { source.Expression, keySelector }));
        }


public static IQueryable<TSource> Count<TSource,TKey>(this IQueryable<TSource> source
, Expression<Func<TSource,TKey>> keySelector)
        {
            return source.Provider.CreateQuery<TSource>(Expression.Call(null
, ((MethodInfo)MethodBase.GetCurrentMethod()).MakeGenericMethod(new Type[] { typeof(TSource)
, typeof(TKey) })
, new Expression[] { source.Expression, Expression.Quote(keySelector) }));
        }


上面是对Linq的一些扩展,加了个Count函数,上面两段代码都可以成功运行
区别只在于一个是keySelector,一个是Expression.Quote(keySelector),Expression.Quote返回的是UnaryExpression。下面这个是抄的微软的源码,修改了一些关键的地方,大部分没变
我的问题是,既然这两个都可以运行而且没问题,那为什么要加Expression.Quote?直接keySelector不是也可以吗?
[解决办法]
就你这个例子,没有什么区别。

热点排行