1

Customersnull許容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に変換できません。LINQtoEntitiesは、プリミティブ型または列挙型の変換のみをサポートします」。

私は何を間違えましたか?

4

2 に答える 2

1

AllSorted次のようなメソッドを書いてみてください。

public IQueryable<Customer> AllSorted<TKey>(Expression<Func<Customer, TKey>> orderby)
{
   return _oContext.Customers.OrderBy(orderby);
}

値型のようなnull許容型int?はオブジェクトから派生しておらず(そしてSystem.Nullable構造体のインスタンスである)、したがってそれらでは機能しないためExpression<Func<Customer, object>> orderby、機能しませんでした。

于 2013-01-19T18:38:19.937 に答える
0

これを試して

public IQueryable<Customer> AllSorted<T>(Expression<Func<Customer, T>> orderby)
{
   return _oContext.Customers.OrderBy(orderby);
}
于 2013-01-19T18:36:59.137 に答える