C# 与Linq一起订购
我与两个实体有一对多关系:C# 与Linq一起订购,c#,linq,one-to-many,C#,Linq,One To Many,我与两个实体有一对多关系: Order: int OrderId string OrderNumber ... OrderItem: int ItemId int sequence decimal Quantity ... 一个Order有多个OrderItems,我想写一个Linq,返回所有订单及其项目,项目按顺序字段排序。 如何编写以下查询之类的查询 Order myOrder = db.Orders.Include("OrderItems").Include("sequence").
Order:
int OrderId
string OrderNumber
...
OrderItem:
int ItemId
int sequence
decimal Quantity
...
一个Order
有多个OrderItems
,我想写一个Linq,返回所有订单及其项目,项目按顺序字段排序。
如何编写以下查询之类的查询
Order myOrder = db.Orders.Include("OrderItems").Include("sequence").FirstOrDefault(x => x.OrderId == 3);
我建议使用lambdas来避免查询中的神奇字符串
var result = from a in Order
join b in OrderItems
on a.Id equals b.OrderId
order by b.sequence
select new
{
a.Id,
b.sequence,
...
};
我建议使用lambdas来避免查询中的神奇字符串。如果不将结果投影到新类型中,就无法做到这一点
var result = from a in Order
join b in OrderItems
on a.Id equals b.OrderId
order by b.sequence
select new
{
a.Id,
b.sequence,
...
};
var myOrder= db.Orders.Include("OrderItems")
.Where(x => x.OrderId == 3)
.Select(o => new {
order = o,
orderItems = o.OrderItems.OrderBy(i => i.sequence)
}).FirstOrDefault();
// Usage
myOrder.order; // Order
myOrder.order.OrderItems; // OrderItems
myorder.orderItems; // OrderItems alternative
虽然将其投影到一个新对象中并不理想,但根据,现在有一个很好的副作用,即排序。匿名对象上的OrderItems也将正确排序。如果不将结果投影到一个新类型中,则无法做到这一点
var myOrder= db.Orders.Include("OrderItems")
.Where(x => x.OrderId == 3)
.Select(o => new {
order = o,
orderItems = o.OrderItems.OrderBy(i => i.sequence)
}).FirstOrDefault();
// Usage
myOrder.order; // Order
myOrder.order.OrderItems; // OrderItems
myorder.orderItems; // OrderItems alternative
虽然将其投影到新对象中并不理想,但根据,现在有一个很好的副作用,即排序。匿名对象上的OrderItems也将正确排序。但使用此方法,我无法访问序列,因为a.OrderItems是订单项列表而不是简单的订单项,但使用此方法我无法访问序列,因为a.OrderItems是订单项列表而不是简单的订单项谢谢Niranjan,我编辑了我的代码您能再次检查吗?谢谢Niranjan,我编辑了我的代码,你能再检查一遍吗?它返回一个匿名类型的集合。每个项目都有
order
和orderItems
属性。如果我的方法必须返回订单类型而不是匿名类型,那该怎么办?恐怕你要的是不可能的。但是匿名对象上的order
属性是实际的order
。我编辑了我的答案,以显示编辑问题的用法和原因。它返回匿名类型的集合。每个项目都有order
和orderItems
属性。如果我的方法必须返回订单类型而不是匿名类型,那该怎么办?恐怕你要的是不可能的。但是匿名对象上的order
属性是一个实际的order
。我编辑了我的答案,以显示对问题编辑的用法和说明。