使用Lambda表达式对泛型集合执行OrderBy时,整数属性会导致异常

时间:2017-04-12 16:27:23

标签: c# lambda entity-framework-6 expression

我有:

IQueryable<T> collection

var sortSelectorParameter = Expression.Parameter(typeof(T), "c");
var sortSelector = GetPropertyOrField<T>(sortSelectorParameter, "SomeId");

collection = collection.OrderByDescending(Expression.Lambda<Func<T, object>>(sortSelector, sortSelectorParameter));

如果参数(SomeId)是一个字符串,这可以正常工作。但是,如果它是一个整数(或者可能是其他类型),那么我会得到一个异常,说它不能将int转换为对象。

如果我尝试Expression.Convert我稍后会说实体框架无法将其转换为字符串,因为它不支持转换。

如果我将Expression.Lambda<Func<T, object>>更改为Expression.Lambda<Func<T, int>>,那么它可以完美地运行,但仅适用于整数属性。

我不知道如何使用一些怪异的switch语句来支持所有类型。任何人都可以就此提出任何建议吗?

0 个答案:

没有答案