如何对父集合和子集合实体进行排序?

时间:2013-06-21 16:39:38

标签: linq-to-entities entity-framework-5

有没有办法对包含的子集合和父集合进行排序?我正在使用LINQ to Entities和EF 5.0。

这是我的查询不起作用。如果我在Include中取出OrderBy,它就可以正常工作,除了子列表没有排序。

return (from parent in m_Context.Parents
            .Include(p => p.Children.OrderBy(c => c.ChildInformation.Name).Select(c => c.ChildInformation)
        orderby parent.Name
        select parent)
        .ToList();

例如,集合:

  • P2

    • C3
    • C1
    • C2
  • P1

    • C2
    • C1

应该以...返回

  • P1

    • C1
    • C2
  • P2

    • C1
    • C2
    • C3

但我现在能做的最好的就是......

  • P1

    • C2
    • C1
  • P2

    • C3
    • C1
    • C2

1 个答案:

答案 0 :(得分:0)

您无法对内部集合进行排序(因为您无法将排序结果分配给parent.Children属性),但您可以返回具有已排序父级和已排序子级的匿名对象,而不包括父实体中的子项:

return (from parent in m_Context.Parents
        orderby parent.Name
        select new {
           Parent = parent,
           Children = parent.Children.OrderBy(c => c.ChildInformation.Name)
        }).ToList();

或者检索父母并将孩子排在记忆中。