我正在尝试使用NH Linq扩展来查询我的数据库,这就是我被困住的地方:
我有一个Customer
对象,它有一个Order
类型的属性,Order
有一个ICollection<Orderline>
集合,最后Orderline
个对象有一个int
类型的属性称为“price
”。我想要做的是,给定customerId,我应该获得所有客户信息(订单和订单行),Orderline
对象的集合应该由Orderline's
价格属性订购。为清楚起见,我遗漏了所有其他细节。
注意:在这种情况下,Customer
和Order
之间的关系为1 to 1
。客户只能有1个订单,Order
可能包含许多Orderlines
,您可以从集合类型中推断出来。
非常感谢任何帮助...
答案 0 :(得分:1)
var query = from customer in session.Query<Customer>()
let order = customer.Order
from orderline in order.Orderlines
orderby orderlines.price
select new
{
CustomerId = customer.Id,
CustomerName = customer.Name,
OrderId = order.Id,
OrderLineId = orderline.Id,
Price = orderline.Price,
};
var results = query.ToLookup(a => a.CustomerId)
.Select(g => new CustomerDto
{
Id = g.Key,
CustomerName = g.First().CustomerName,
OrderLines = g.Select(a => new OrderLineDto(a.OrderLineId, a.Price)).ToList()
}).ToList();