我看到了下面的函数在一个帖子,它允许使用通用表达一个命令数据:问题与通用的LINQ排序依据功能
public static IOrderedQueryable<T> OrderBy<T, TKey>(
this IQueryable<T> source, Expression<Func<T, TKey>> func, bool isDescending) {
return isDescending ? source.OrderByDescending(func) : source.OrderBy(func);
}
当我尝试使用此功能,我得到一个错误说“的类型或命名空间名称“TKEY的”找不到(是否缺少using指令或程序集引用?)”我在这里做了愚蠢的事情,但我无法弄清楚
编辑:。
在做了更多的研究之后,我认为我的问题在于构建Expr我通过它的激情。是否可以构建一个可以包含不同类型的表达式?假设我的数据集有一个字符串,一个int和一个bool,我想使用上面的通用函数来排序任何项目。我该怎么做呢?
我现在有这方面的工作:
if (IsString)
{
Expression<Func<T, string>> expString = ...;
// call orderBy with expString
}
else if (IsInt)
{
Expression<Func<T, int>> expInt;
// call orderBy w/ expInt
}
:
我想是这样的:
Expression<Func<T, {something generic!}>> exp;
if (IsString)
exp = ...;
else if (IsInt)
exp = ...;
:
// call orderBy with exp
这似乎很好。你如何使用这种方法?你把它添加到静态类吗? – BFree 2009-09-10 19:46:59