加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

linq-to-entities – LINQ“.Include”orderby in subquery

发布时间:2020-12-12 06:37:28 所属栏目:MsSql教程 来源:网络整理
导读:我有以下实体代码,它返回所有用户并“包含”他们的所有样本请求: var userQuery = from u in _IntranetContext.UserSet.Include("SampleRequests") orderby u.LastName ascending select u; 每个用户都有多个SampleRequests.每个SampleRequest都有一个ID#(只
我有以下实体代码,它返回所有用户并“包含”他们的所有样本请求:
var userQuery = from u in _IntranetContext.UserSet.Include("SampleRequests")
                           orderby u.LastName ascending
                           select u;

每个用户都有多个SampleRequests.每个SampleRequest都有一个ID#(只是一个整数:1,22,341等).上面的LINQ to实体抓住用户及其SampleRequests,如下所示:

用户1:33,341,12

用户2:24,3,881

正如您所看到的,SampleRequest ID#不是按升序排列的.我希望结果是有序的.

如何将orderby约束放在包含的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对象的集合,但更新数据库中的对象可能会导致问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读