重複の可能性:
動的 LINQ OrderBy
クライアント側のグリッド コントロール (KendoUI グリッド) からサーバーに渡されるカスタム ソート オプションのリストがあります。これらの並べ替えオプションには、文字列として並べ替えるプロパティがあります。sort オブジェクトの値をチェックし、適切な LINQ を適用する switch メソッドを作成しました。
private IQueryable<Report> SortReports(IQueryable<Report> reports, KendoSort sort)
{
switch (sort.Field)
{
case "name":
return sort.Dir == "asc" ? reports.OrderBy(x => x.Name) : reports.OrderByDescending(x => x.Name);
case "description":
return sort.Dir == "asc" ? reports.OrderBy(x => x.Description) : reports.OrderByDescending(x => x.Description);
default:
return sort.Dir == "asc" ? reports.OrderBy(x => x.Id) : reports.OrderByDescending(x => x.Id);
}
}
これはうまく機能していますが、とても醜いようです。これを行いたいエンティティのすべてのタイプに対してカスタム関数を作成する必要がないように、リフレクションでこれを行うにはどうすればよいですか? エンティティに関係なく、これを実行する単一の関数があればいいのにと思います。