私はより大きな/より複雑な問題を抱えていますが、簡単にするために、次のことを考えてみましょう:
ID (int, primary key)とName (varchar/string)の 2 つの列を持つProductというSQL データベースにテーブルがあるとします。シンプルなLINQ DataContextもあります。
クエリを作成し、「my」関数に渡しました。次のようなものだとしましょう: (もう少し複雑かもしれませんが)
IQueryable<Product> query = from p in db.Products select p;
メソッドがこのクエリを取得し、パラメーターとして渡されたら、並べ替え順序を変更する必要があります。
IQueryable<Product> sortedQuery = query.OrderBy(x => x.Name);
これをより一般的なものにしたいと思います。つまり、ソートするフィールドを指定したいと思います。通常、switch
文字列を取るステートメントを実行できます。ただし、パラメータを直接渡す方法があるかどうかを知りたいです。これを他のデータベース テーブルに拡張するつもりなので、これらのswitch
ステートメントは面倒になります。
私は次のようなことを試みていました:
IQueryable<Product> sortedQuery = query.OrderBy(x => (typeof(Product)).GetProperty(“Name”));
しかし、これはうまくいきません。また、LINQ to SQL が維持されること、つまり SQL Server で実行される並べ替えが確実に行われるようにしたいと考えています。したがって、デバッグすると、この LINQ クエリから SQL クエリを取得する必要があります。
よろしくお願いいたします。