我需要为我正在处理的项目编写一些动态查询。我发现我的程序在 Count 和 First 方法上花费了大量时间,所以我开始更改为 .Single,结果发现没有这样的方法。
下面的代码是我第一次尝试创建一个(主要是从 Where 方法复制的),但它不起作用。帮助?
public static object Single(this IQueryable source, string predicate, params object[] values)
{
if (source == null) throw new ArgumentNullException("source");
if (predicate == null) throw new ArgumentNullException("predicate");
LambdaExpression lambda = DynamicExpression.ParseLambda(source.ElementType, typeof(bool), predicate, values);
return source.Provider.CreateQuery(
Expression.Call(
typeof(Queryable), "Single",
new Type[] { source.ElementType },
source.Expression, Expression.Quote(lambda)));
}