动态顺序对可空列失败
本文关键字:失败 顺序 动态 | 更新日期: 2023-09-27 17:54:41
存在一个表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)
{
}
}
消息(翻译自德语)为
"类型系统。Nullable不能转换为System.Object。LINQto Entities只支持转换基本类型或枚举类型"。
我做错了什么?
试着这样写AllSorted
方法:
public IQueryable<Customer> AllSorted<TKey>(Expression<Func<Customer, TKey>> orderby)
{
return _oContext.Customers.OrderBy(orderby);
}
它没有工作,因为像int?
这样的可空类型是值类型,不派生自对象(并且是System.Nullable
结构体的实例),因此Expression<Func<Customer, object>> orderby
不会与它们一起工作。
试试这个
public IQueryable<Customer> AllSorted<T>(Expression<Func<Customer, T>> orderby)
{
return _oContext.Customers.OrderBy(orderby);
}