LINQ:JOIN的点符号等价物

时间:2009-10-02 21:18:50

标签: 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表达式?

1 个答案:

答案 0 :(得分:67)

像这样:

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位。在规范中,执行此操作的查询运算符使用透明标识符来指示行为。