私はこの linq を devforce 式にしました:
(mgr.testTables の r から r).OrderBy(r => r.id) を選択します。
ソート列名を文字列として指定したいのですが、次のようなものが必要です:
string orderBy = "r => r.id";
(mgr.testTables の r から r).OrderBy( orderBy );
文字列をlinq式として解析する方法はありますか?
私はこの linq を devforce 式にしました:
(mgr.testTables の r から r).OrderBy(r => r.id) を選択します。
ソート列名を文字列として指定したいのですが、次のようなものが必要です:
string orderBy = "r => r.id";
(mgr.testTables の r から r).OrderBy( orderBy );
文字列をlinq式として解析する方法はありますか?
1 つのオプションは、これにDynamic LINQプロジェクトを使用することです。DynamicQuery
これはRubenさんのおっしゃる通りだと思います。とにかく、次のようなものを書くことができます:
var res = db.Table.Where("CategoryID == 2").Select("CategoryName");
ダイナミック LINQ は、文字列をパラメーターとして受け取る通常の LINQ メソッドのオーバーロードを追加します。文字列を解析して式ツリーにし、LINQ または LINQ to SQL で使用できるようにします。
別の方法として、単純なコード (さまざまなプロパティにアクセスする関数や、それらを値と比較するために使用できるさまざまな演算子など) から式ツリーを構成することもできます。これはよりエレガントで、オーバーヘッドが少ないと思います。私はこのアプローチについてここに書きましたが、より単純にするPredicateBuilderという名前の型があります。
MSDN Code Gallery のDynamicQueryの下にあるC# Samples for Visual Studio 2008の文字列に基づいて、実際にこれを行う、完全に機能する式パーサーのサンプルがあります。(コントロールは、このサンプルのわずかに変更されたバージョンを内部で使用します。)LinqDataSource