0

私はこの linq を devforce 式にしました:

(mgr.testTables の r から r).OrderBy(r => r.id) を選択します。

ソート列名を文字列として指定したいのですが、次のようなものが必要です:

string orderBy = "r => r.id";
(mgr.testTables の r から r).OrderBy( orderBy );

文字列をlinq式として解析する方法はありますか?

4

2 に答える 2

1

1 つのオプションは、これにDynamic LINQプロジェクトを使用することです。DynamicQueryこれはRubenさんのおっしゃる通りだと思います。とにかく、次のようなものを書くことができます:

var res = db.Table.Where("CategoryID == 2").Select("CategoryName");

ダイナミック LINQ は、文字列をパラメーターとして受け取る通常の LINQ メソッドのオーバーロードを追加します。文字列を解析して式ツリーにし、LINQ または LINQ to SQL で使用できるようにします。

別の方法として、単純なコード (さまざまなプロパティにアクセスする関数や、それらを値と比較するために使用できるさまざまな演算子など) から式ツリーを構成することもできます。これはよりエレガントで、オーバーヘッドが少ないと思います。私はこのアプローチについてここに書きましたが、より単純にするPredicateBuilderという名前の型があります。

于 2010-06-22T16:11:28.717 に答える
1

MSDN Code Gallery のDynamicQueryの下にあるC# Samples for Visual Studio 2008の文字列に基づいて、実際にこれを行う、完全に機能する式パーサーのサンプルがあります。(コントロールは、このサンプルのわずかに変更されたバージョンを内部で使用します。)LinqDataSource

于 2010-06-22T16:11:46.110 に答える