2016-11-14 6 views
-1

オブジェクトにLINQを使用すると、メソッドを個別に定義することなくインラインメソッドを使用してプロパティを割り当てる方法がありますか?オブジェクトに割り当てるときにインラインメソッドを使用する方法

たとえば、LINQステートメントから割り当てられた値で新しいリスト(testObjects)を作成するために、結果を繰り返し処理しています。 TestPropプロパティには複雑なロジックが設定されているため、別のメソッドを呼び出すのではなく、LINQステートメントのインラインメソッド内でそのロジックを実行します。

以下のようにTestPropを割り当てるとき、私は簡単に言うと、DriverIDという文字列値のプロパティを持っています。この課題では、DriverIDを割り当てる前にDriverIDがGUIDであることを確認する必要があります。もしそうなら、それをTestPropに割り当てます。新しいGuid()を割り当てない場合。

var testObjects = results.Select(row => new 
    { 
    Name = row.Name, 
    Address = row.Address, 
    TestProp = //I don't want to call a method like ConvertToGUID() here, I would rather do the work directly in the LINQ statement with something like 
       { 
       //Do the work here instead by performing all the logic inline within this LINQ statement.    
       } 
    } 

私はあなたがTestPropを割り当てるために、ここで直接メソッドを呼び出すことができます知っているが、私は別のメソッドを定義する必要はありませんので、代わりに右の1つのLINQコールプロパティの割り当てでは、すべてのメソッドのロジックを維持する方法がありますTestProp値を取得するために必要な作業

+1

LINQ to Objects(代理人のみ必要)やEFなどを使用しており、式ツリーが必要ですか? –

+0

オブジェクトへのLinq。 – mameesh

+0

質問を編集して、私が探しているものを明確にするようにしました。 – mameesh

答えて

3

LINQ to Objectsを使用している場合、ラムダ式はデリゲートに変換可能である必要があります。文のボディラムダは、式ツリーに変換されないように、しかしQueryableを使用してLINQプロバイダと助けにはなりません

var testObject = results.Select(row => { 
    // Several statements here, as you wish 
    int x = row.X; 
    int y = row.Y; 
    int z = x + y; 
    return new { 
     testProp = z, 
     ... 
    } 
}); 

この:だからあなたのようなものを使用することができます。

関連する問題