|
分類:[.NET 全般]
ASP.NET MVC5 C# Framework4.6.2 VisualStudio2017
DB:Oracle12 データベースファースト
リポジトリパターンを使用ています。
(見よう見まねのため、正確に理解できていません。)
やりたいこと:
データに対して複数ソートを実行したい。
リポジトリがIQueryable<T>を返すのは良くない(?)のでリポジトリ内で実装しようとしてる。
調べた結果:
以下のようなコードでリポジトリで定義すれば、実現できそう。
public IEnumerable<T> OrderBy(Expression<Func<T, object>> orderLambda)
{
return DbSet.OrderBy(orderLambda);
}
※実際には複数条件でソートなので、引数はIEnumerableになる。
IEnumerable<Expression<T, object>> orderLambda
困っていること:
実行すると例外が発生した。(ソートしたい値の型はint32)
例外の内容:
型 'System.Int32' を型 'System.Object' にキャストできません。
LINQ to Entities では EDM プリミティブ型または列挙型のキャストのみがサポートされます。
試したこと:
引数をExpression<Func<T, object>>からExpression<Func<T, int>>に変更すればエラーが出ず実行できる。
教えて欲しいこと:
複数ソートなので引数はIEnumerable<Expression<T, object>>にしようと思いましたが
一つ目のソート条件がint
二つ目のソート条件がstring だったとき、どう指定すればよいのかわかりません。
わかる方がおられましたら、教えていただけないでしょうか。
よろしくお願いいたします。
|