我有一个LINQ语句,我想在第一个地址中合并昵称为'我'。
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
};
}
我想知道:
答案 0 :(得分: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
};