選択したプロパティで並べ替えオブジェクトを実装したいと考えています。私はToListメソッドメソッドによって、クエリを実体化するとLINQで選択したプロパティでオブジェクトを並べ替える
Expression<Func<Goal, object>> sortProperty;
switch (sc.Sort)
{
case "Name":
sortProperty = p => p.Name; // String
break;
case "Priority":
sortProperty = p => p.Priority; // Enum
break;
case "CreatedDate":
sortProperty = p => p.CreatedDate; // DateTime
break;
case "Id":
default:
sortProperty = p => p.Id; // Long
break;
}
queryable = sc.IsAscending
? queryable.OrderBy(sortProperty)
: queryable.OrderByDescending(sortProperty);
私は( 'ID' シナリオでは)例外を取得:
追加情報: 「システムを入力するタイプ 'System.Int64' をキャストすることができません。オブジェクト '。エンティティへのLINQは、キャストEDMプリミティブ または列挙型のみをサポートします。
私の質問はこうです:このような方法で機能を実装することは可能ですか?あるいは、私はOrderByとOrderByDescendingのどちらかを選択するように移動する必要がありますか?
あなたは '(オブジェクト)' 'たSortProperty = P =>(オブジェクト)p.Idにキャストすることが必要な理由。 // Long'? 'sortProperty = p => p.Id;'の何が問題なのですか? –
@EugenePodskal:これは私の最初の考えでしたが、 'sortProperty'は' Expression>型です。これはキャストなしで広く同じ苦情があると思われます。正確な苦情)。 –
Chris
この(オブジェクト)キャストは私のテストのものです。私はコードから削除します – Jacek