LINQ“。在子查询中包含”orderby“

我有以下实体代码,它返回所有用户并“包含”他们的所有示例请求:

    var userQuery = from u in _IntranetContext.UserSet.Include("SampleRequests")
                           orderby u.LastName ascending
                           select u;

每个用户有多个SampleRequests。 每个SampleRequest都有一个ID#(只是一个整数:1,22,341等)。 上面的LINQ to实体抓取用户和他们的SampleRequests像这样:

User1:33,22,341,12

User2:24,3,981

正如你所看到的,SampleRequest ID#没有按升序排列。 我希望结果是有序的。

如何将订单约束放在包含的SampleRequests ID#

请注意:SampleRequestId是SampleRequest ...的一个属性,不是User对象的属性


我现在可以考虑两种选择,你想要什么。 您可以将它们选择到一个新类中,其中用户和相关请求是属性:

var userQuery = from u in _IntranetContext.UserSet.Include("SampleRequests")
                orderby u.LastName ascending
                select new
                {
                    User = u,
                    SampleRequests = u.SampleRequests.OrderByDescending(r => r.SampleRequestId)
                };

如果您想要返回此类型,这将导致问题,因为它是匿名的。

你也可以选择这个到一个新的用户对象,类似这样:

var userQuery = from u in _IntranetContext.UserSet.Include("SampleRequests")
                orderby u.LastName ascending
                select new User
                {
                    Property1 = u.Property1,
                    Property2 = u.Property2,
                    Property3 = u.Property3,
                    SampleRequests = u.SampleRequests.OrderByDescending(r => r.SampleRequestId).ToList()
                };

这将返回一组User对象,但更新数据库中的对象可能会导致问题。


只需在订单中添加另一个订购参数:

var userQuery = from u in _IntranetContext.UserSet.Include("SampleRequests")
                           orderby u.LastName ascending, 
                                   u.SampleRequestId descending
                           select u;

编辑:治疗时间<15秒。

var userQuery = from u in _IntranetContext.UserSet.Include("SampleRequests")
                orderby u.LastName ascending, u.SampleRequestId descending
                select u;
链接地址: http://www.djcxy.com/p/37641.html

上一篇: LINQ ".Include" orderby in subquery

下一篇: Open a file under cursor with a line break in vim