私はLINQ
というクエリを次のように書いていますが、より一般的なものにしてハードコーディングされた値を取り除くことができるかどうかは疑問です。LINQ作成orderbydesc generic
switch (sortOrder)
{
case "DESC":
if(sortBy == "A")
query = query.OrderByDescending(x => x.Field1);
if(sortBy == "B")
query = query.OrderByDescending(x => x.Field2);
if (sortBy == "C")
query = query.OrderByDescending(x => x.Field3);
break;
default:
if(sortBy == "A")
query = query.OrderBy(x => x.Field1);
if(sortBy == "B")
query = query.OrderBy(x => x.Field2);
if (sortBy == "C")
query = query.OrderBy(x => x.Field3);
break;
}
私が探しているのは答えではありません。その質問では、ユーザはASCの1番目をソートしてDescを尋ねました。
私の場合、私はASCかDESCのどちらかをソートする必要があります。
これまで実行を制御するために、 'string'sを使用しないでくださいあなたは、あなたがそれを
TSource
のプロパティを選択して式を与える、すなわち、標準OrderBy()
のようにそれを使うだろう。 'bool'フラグ、' enum'、あるいはより良い多態性を使用してください。 –'sortBy'変数は誰が設定しますか?それはユーザーによって選択され、このコードに渡されますか? –