c# - LINQ:等同于 JOIN 的点符号

标签 c# linq syntax linq-query-syntax

考虑使用查询符号编写的这个 LINQ 表达式:

 List<Person> pr = (from p in db.Persons
                     join e in db.PersonExceptions
                     on p.ID equals e.PersonID
                     where e.CreatedOn >= fromDate
                     orderby e.CreatedOn descending
                     select p)
                   .ToList();

问题:如何使用点表示法编写此 LINQ 表达式?

最佳答案

像这样:

List<Person> pr = db.Persons
                    .Join(db.PersonExceptions,
                          p => p.ID,
                          e => e.PersonID,
                          (p, e) => new { p, e })
                    .Where(z => z.e.CreatedOn >= fromDate)
                    .OrderByDescending(z => z.e.CreatedOn)
                    .Select(z => z.p)
                    .ToList();

请注意如何引入新的匿名类型来向前传送 pe 位。在规范中,执行此操作的查询运算符使用透明标识符来指示行为。

关于c# - LINQ:等同于 JOIN 的点符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1511833/

相关文章:

c# - Parallel.Foreach 委托(delegate)调用另一个委托(delegate)

c# - 如何按两个字段排序?

python - % 与 + 与 Python 中的字符串相关?

c# - 打开存储在 Azure Blob 存储中的 pdf 文件(使用字节)

c# - Monogame 3.6 共享项目 intellisense 在 Monodevelop 7.5 中不起作用

c# - LINQ 表达式语法如何与 Include() 配合使用以进行预加载

c# - 使用 LINQ 提取数据时自动创建正确的对象类

syntax - 在 applescript 中,什么是 "application process"?

haskell - where 绑定(bind)、let 绑定(bind)和单个赋值运算符 (<-) 之间的区别

c# - 如何从 3 个 double 列表中获取 float 组?