1

含まれている子コレクションと親コレクションの両方を並べ替える方法はありますか? LINQ to Entities と EF 5.0 を使用しています。

これが機能しない私のクエリです。インクルードで 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
4

1 に答える 1

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();

または、親を取得し、子をメモリ内で並べ替えます。

于 2013-06-21T16:51:16.720 に答える