C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 153 を表示中)
■88808 / )  リポジトリパターンで複数ソート
□投稿者/ 青い子ブタ (1回)-(2018/09/28(Fri) 16:44:37)

分類:[.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 だったとき、どう指定すればよいのかわかりません。


わかる方がおられましたら、教えていただけないでしょうか。
よろしくお願いいたします。

返信 編集キー/


管理者用

- Child Tree -