linq - 如何使用带有lambda表达式的join重写此LINQ?

标签 linq join lambda

似乎大多数LINQ都是用lambda表达式编写的。我该如何使用Lambda重写此linq,有点混淆样式(尤其是join)?

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 };

最佳答案

我更喜欢Joins的“LINQ语法”,因为我认为它看起来更干净。

无论如何,这是将LINQ-join转换为“Lambda Expression” -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),而只是与.“链接在一起”。-试试吧!

关于linq - 如何使用带有lambda表达式的join重写此LINQ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13692015/

相关文章:

mysql - 具有复杂连接的 Rails 和查询 : Can each joined table have an alias?

SQL查询获取数据表列值中架构表行值的值

mysql - 其他表mysql中 child 的总价

c++ - 在头文件中使用 lambda 会违反 ODR 吗?

c++ - 函数指针和 lambda 的内存管理

java - 从 JDK8 升级到 JDK11 后奇怪的 java.lang.InstantiationException 和 java.lang.NoSuchMethodException

linq - 当没有找到结果时 linq 查询返回什么

c# - 按多个键值对数组进行排序

c# - 将异步循环转换为 LINQ 查询

linq - 使用 LINQ 重写元组和 if else 语句的代码