用Linq订购 [英] Order by with Linq

查看:65
本文介绍了用Linq订购的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我与两个实体存在一对多关系:

I have a One-Many relation with two Entities :

Order:
int OrderId 
string OrderNumber
...

OrderItem:
int ItemId
int sequence
decimal Quantity
...

一个Order具有多个OrderItems,我想编写一个Linq,该Linq返回所有订单及其物料,并且物料按序列字段排序. 如何编写查询,例如以下查询?

One Order Has multiple OrderItems, I want to write a Linq that return all orders with their items and items be sorted by sequence field. How can i write a query such as following query?

Order myOrder = db.Orders.Include("OrderItems").Include("sequence").FirstOrDefault(x => x.OrderId == 3);

推荐答案

如果不将结果投影到新类型中就无法做到这一点.

You can't do that without projecting the results into a new type.

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

根据

Whilst it's not ideal projecting it into a new object, according to this blog post, there is a nice side-effect that now order.OrderItems on your anonymous object will be sorted correctly too.

这篇关于用Linq订购的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆