大家好我对
Linq有疑问.
我将结果分组到客户邮政编码上.对于每个邮政编码,我想查看预订量和订购的设备数量.
到目前为止我的代码看起来像这样:
var statistics = from b in db.Bookings
from c in db.Customers
where b.customerID == c.id
group c by c.zipcode into stat
select new {
Zipcode = stat.Key,
NumberOfBookings = stat.Count()
};
此代码组生成zipcodes,并为我提供每个邮政编码中的预订量.如何获得设备数量?
最佳答案 您可以(并且最好)使用模型中的导航属性,而不是像在SQL中那样使用连接:
var statistics =
from b in db.Bookings
group b by b.Customer.zipcode into g
select new
{
Zipcode = g.Key,
NumberOfBookings = g.Count(),
NumberOfEquipments = g.SelectMany(b => b.Equipments).Count(),
};
请注意,g变量表示具有相同邮政编码的一组预订,因此在应用Count运算符之前,SelectMany
用于获取所有关联设备.
当然,这不是唯一的方法,例如你可以使用Sum代替:
NumberOfEquipments = g.Sum(b => b.Equipments.Count())