8

ほとんどのLINQはラムダ式で記述されているようです。ラムダを使用してこのlinqを書き直すにはどうすればよいですか?スタイルとのちょっとした混乱(特に結合)?

var responses =
            from c in questionRepository.GetReponses()
            join o in questionRepository.GetQuestions() on
            c.QuestionID equals o.QuestionID
            where c.UserID == 9999
            orderby o.DisplayOrder
       select new { o.QuestionText, c.AnswerValue };
4

2 に答える 2

16

見た目がすっきりしていると思うので、結合には「LINQ構文」を使用します。

いずれにせよ、LINQ-joinを「LambdaExpression」-joinに変換する方法は次のとおりです。

の翻訳:

from a in AA
join b in BB on
a.Y equals b.Y
select new {a, b}

は:

AA.Join(                 // L
  BB,                    // R
  a => a.Y, b => b.Y,    // L -> join value, R -> join value
  (a, b) => new {a, b})  // L+R result

他のLINQキーワードは、変換がはるかに簡単です(たとえばOrderBy(u => u.DisplayOrder)、.-と「チェーン」されているだけ.です。試してみてください。

于 2012-12-03T21:36:09.327 に答える
8
var responses = questionRepository.GetReponses()
                   .Join(questionRepository.GetQuestions(), 
                         c => c.QuestionID,
                         o => o.QuestionID,
                         (c, o) => new {c, o})
                   .Where(x => x.c.UserID == 99999)
                   .OrderBy(x => x.o.DisplayOrder)
                   .Select(x => new {x.o.QuestionText, x.c.AnswerValue});
于 2012-12-03T21:42:03.767 に答える