【发布时间】:2017-01-05 04:33:00
【问题描述】:
你能帮我把这个 Linq 查询翻译成扩展方法吗:
var query = from person in people
join pet in pets on person equals pet.Owner into gj
from subpet in gj.DefaultIfEmpty()
select new { person.FirstName, PetName = (subpet == null ? String.Empty : subpet.Name) };
查询来自MSDN page关于左外连接。
我已经这样做了:
var result = people.join(pets, x, y => y.Owner, (x, y) => {
x.FirstName,
PetName = y == null ? String.Empty : y.Name
}).ToList();
但我不知道如何处理DefaultIfEmpty()?
添加 DefaultIfEmpty() 如其他解决方案中所述导致 CS0746 Invalid anonymous type member declarator。必须使用成员分配、简单名称或成员访问来声明匿名类型成员。
【问题讨论】:
-
为什么一定要使用方法语法?联接在查询语法中更加更简洁,而方法语法在性能方面没有给您带来任何好处。