2010-12-10 5 views
1

ラムダ式の使用を開始したばかりで、ショートカットが本当に好きです。私は包括的なメソッドのラムダ内にスコープを持っているという事実も好きです。私が問題を抱えているのは、ラムダを入れ子にすることです。私は、次のコンパイル時にエラーが出るところエンティティフレームワークとネストされたラムダ式

public void DoSomeWork() 
{ 
    MyContext context = new MyDomainContext(); 
    context.GetDocumentTypeCount(ci.CustomerId, io => 
    { 
    if (io.HasError) 
    { 
     // Handle error 
    } 
    // Do some work here 
    //   ...   
    // make DB call to get data 
    EntityQuery<AppliedGlobalFilter> query = 
     from a in context.GetAppliedGlobalFiltersQuery() 
     where a.CustomerId == ci.CustomerId && a.FilterId == 1 
     select a; 

    context.Load<AppliedGlobalFilter>(query, lo => 
     { 
     if (lo.HasError) 
     { 
     } 

     **// Do more work in this nested lambda. 
     // Get compile time error here** 

    } 
        }, null); 
     }, null); 


} 

二ラムダは、次のとおりです:入力するラムダ式を変換できません

「System.ServiceModel.DomainService.Client.LoadBehavior」をここで私が何をしようとしていますものです

コンパイラは、以前のラムダと同じオーバーライドを使用していても、Loadメソッドの間違ったオーバーロードを選択しています。

これはネストしようとしているのですか?それとも別の何かが間違っていますか?上記の私のコメントで説明したように

おかげで、

-Scott

+0

申し訳ありません - 問題が見つかりました。それはネストされたラムダとは無関係で、私のラムダの内部にひどく形成されたループとは関係ありません。それはintelisenseが狂って行き、偽の誤りを報告するようになった。上のコードではすべてが良いです。 – Scott

答えて

0

は、問題を発見しました。私は今すぐ仕事に戻ります---赤い顔とすべて....

0

これはあなたが望む答えではありませんが、私は長いとか入れ子のラムダについて注意することをお勧めします。これらは機能しますが、他の開発者がコードを読み/維持することを困難にすることがよくあります。私はラムダの長さを3つのステートメントに制限しようとしますが、ネストはありません。