有一个表Customers
,其中包含可以为cstCredit
列的可居住用户。以下工作正常,可以迭代。
var query = _oContext.Customers.OrderBy(cst => cst.cstCredit);
但是,迭代时会出现以下情况。
public IQueryable<Customer> AllSorted(Expression<Func<Customer, object>> orderby)
{
return _oContext.Customers.OrderBy(orderby);
}
void test()
{
var query = AllSorted(cst => cst.cstCredit);
foreach (Customer oCustomer in query)
{
}
}
消息(翻译自德语)是
“System.Nullable类型无法转换为System.Object.LINQ to Entities仅支持转换原语或枚举类型“。
我做错了什么?
答案 0 :(得分:1)
尝试编写AllSorted
方法,如下所示:
public IQueryable<Customer> AllSorted<TKey>(Expression<Func<Customer, TKey>> orderby)
{
return _oContext.Customers.OrderBy(orderby);
}
它不起作用,因为像int?
这样的可空类型是值类型不是从对象派生的(并且是System.Nullable
结构的实例),因此Expression<Func<Customer, object>> orderby
不适用于它们。
答案 1 :(得分:0)
试试这个
public IQueryable<Customer> AllSorted<T>(Expression<Func<Customer, T>> orderby)
{
return _oContext.Customers.OrderBy(orderby);
}