如何使用 LINQ 对通过 .Include("table") 检索的表进行排序?

Posted

技术标签:

【中文标题】如何使用 LINQ 对通过 .Include("table") 检索的表进行排序?【英文标题】:How to order table retrieved via .Include("table") using LINQ? 【发布时间】:2015-06-25 12:25:23 【问题描述】:

我有这个 LINQ 代码,它运行良好。我可以订购Posts,但我还需要订购通过Include("Comments")检索到的Commentsorderby comment.DateAndTime descending

如何在 LINQ 代码中实现; (订购 cmets)?。

另外我想知道是否有办法直接在底层数据库表定义中实现这一点?评论表定义。

public IQueryable<Post> ListViewPosts_GetData()

    FacebookDataEntities entities = new FacebookDataEntities();

    var friends_A = from f in entities.Friends
                    where f.Friend_B == User.Identity.Name && f.AreFriends
                    select f.Friend_A;

    var friends_B = from f in entities.Friends
                    where f.Friend_A == User.Identity.Name && f.AreFriends
                    select f.Friend_B;

    return from p in entities.Posts.Include("Comments")
           let userName = p.UserName
           where userName == User.Identity.Name
          || friends_A.Concat(friends_B).Contains(userName)
           orderby p.DateAndTime descending
           select p;

【问题讨论】:

只是一个提示,你可以在你的数据库中创建一个视图并过滤视图 你能显示朋友、cmets和posts的表关系..包括列吗?也许这是一个错误的方法.. 【参考方案1】:

我正在使用手机,所以这可能有错误,但您应该可以执行以下操作:

foreach(var post in p) post.Comments.OrderByDescending(c => c.DateAndTime);

【讨论】:

以上是关于如何使用 LINQ 对通过 .Include("table") 检索的表进行排序?的主要内容,如果未能解决你的问题,请参考以下文章

Linq to Entities - 使用 Include() 急切加载

(转)Linq-DataSet

如何通过 LINQ to Sql 结果上的数据对分组进行 lambda?

从 3 个表 LINQ .NET 中使用 Include

如何在一个查询中通过 LINQ Include 检索子数据以提高性能?

如何通过 Linq 将集合拆成多个块?