子のフィールドに基づいて親をソートする必要があります。子プロパティを持つコレクションをソートするにはどうすればよいですか?
サンプルコード;
IQueryable<Parent> data = context.Parents.Include(o=>o.Children);
//子はメンバ(文字列)名を持ちます。
質問:どのようにParent by Children Namesを並べ替えることができますか?
子のフィールドに基づいて親をソートする必要があります。子プロパティを持つコレクションをソートするにはどうすればよいですか?
サンプルコード;
IQueryable<Parent> data = context.Parents.Include(o=>o.Children);
//子はメンバ(文字列)名を持ちます。
質問:どのようにParent by Children Namesを並べ替えることができますか?
ご質問は、すべての最初以来、それは、Entity FrameworkとLINQツーSQLの両方でタグ付けされ、やや紛らわしいです。どのORMを実際に使用していますか?ポイントへ
第二、そしてより多くの、あなたが"sort Parent by Children Names"
にしたいと言います。どの子の名前を並べ替えたいですか?あなたが名前の別のリストに名前のリストを比較し、一方が他方の前に来るべきかを決めることができないことを実現していますか?
したがって、辞書順に最初に表示される子の名前でソートすると仮定すると、あなたのソリューションは次のようになります(@Paulはこれに近いですが、ソートするプロパティを指定する必要があります):
この場合context.
Parents.
OrderBy(p => p.
Children.
OrderBy(c => c.Name).Select(c => c.Name).FirstOrDefault()
);
、以下の設定を検討してください。親PB
は子供CC
とCA
を持っていながら、親PA
は子供CB
とCD
を持っています。 CB
はPA
ための「メイン」子になりながら子供CA
は、PB
ための「メイン」子として使用されますので、ソートの結果、親PB
は、ソートされたリストの最初に来ます。それがあなたが探している行動でない場合は、例と明確な説明を提供してください。
子供の名前の1つを並べ替えることができます。おそらく対応する並べ替えを行うことでそれを選択できますか?
のような何か:
IQueryable<Parent> data = context.Parents.OrderBy(
p=>p.Children.OrderBy(chi => chi.Name).FirstOrDefault());
ハイ・ポール。このlinqは例外をスローしました。 「DbSortClause式は順序匹敵するタイプを持っている必要があります パラメータ名:キー」:http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/ –
あなたはおそらく、ここで説明したアプローチを試すことができます'FirstOrDefault()の後に'このような 'FirstOrDefault()と同様、プロパティまたは列を取得する必要があるため3b26c018-a6e5-4cf4-9547-744991ff5ada – Paul
@NuriYILMAZことです。MyProperty1'。 –
本当にありがとう、それは働いている! –