1

我正在尝试使用 NH Linq 扩展查询我的数据库,这就是我卡住的地方:

我有一个Customer对象,它有一个类型的属性Order,并且Order有一个ICollection<Orderline>集合,最后Orderline一个对象有一个int名为' price'的类型的属性。我想要做的是,给定一个 customerId,我应该获取所有客户信息(订单和订单行),并且Orderline对象的集合应该按Orderline's价格属性排序。为了清楚起见,我省略了所有其他细节。

Customer注意:在这种情况下,和之间的关系Order1 to 1。一个客户只能有 1 个订单,一个Order可能包含许多Orderlines您可能从集合类型中推断出来的订单。

非常感谢您的帮助...

4

1 回答 1

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();
于 2012-10-16T10:51:49.577 回答