我有一个LINQ语句,我想在First地址中合并昵称为'Me'.
using (var ctx = new DataEntities())
{
return from c in ctx.Customers.Include("Addresses")
let m = from a in c.Addresses where a.Nickname == "Me" select a
where m.Any()
select new
{
Id = c.CustomerId,
m.First().Name,
m.First().Address1,
m.First().Address2,
m.First().City,
m.First().State,
m.First().Zip,
m.First().Email,
m.First().PhoneNumber
};
}
Run Code Online (Sandbox Code Playgroud)
我在想:
Mar*_*ell 10
对于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
};
Run Code Online (Sandbox Code Playgroud)