对于LINQ to SQL,EF等,它可能无关紧要 - 完全有可能TSQL转换无论如何都会使它相同.当然,你可以确定一下;-p
但对于LINQ到对象(这是非常字面的)它会.您可以使用let
以下方法改进:
return from c in ctx.Customers.Include("Addresses") let m = from a in c.Addresses where a.Nickname == "Me" select a where m.Any() let first = m.First() select new { Id = c.CustomerId, first.Name, first.Address1, ... first.PhoneNumber };