2011-07-07 3 views

答えて

27

ご質問は、すべての最初以来、それは、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は子供CCCAを持っていながら、親PAは子供CBCDを持っています。 CBPAための「メイン」子になりながら子供CAは、PBための「メイン」子として使用されますので、ソートの結果、親PBは、ソートされたリストの最初に来ます。それがあなたが探している行動でない場合は、例と明確な説明を提供してください。

+0

本当にありがとう、それは働いている! –

3

子供の名前の1つを並べ替えることができます。おそらく対応する並べ替えを行うことでそれを選択できますか?

のような何か:

IQueryable<Parent> data = context.Parents.OrderBy(
    p=>p.Children.OrderBy(chi => chi.Name).FirstOrDefault()); 
+0

ハイ・ポール。このlinqは例外をスローしました。 「DbSortClause式は順序匹敵するタイプを持っている必要があります パラメータ名:キー」:http://social.msdn.microsoft.com/forums/en-US/adodotnetentityframework/thread/ –

+0

あなたはおそらく、ここで説明したアプローチを試すことができます'FirstOrDefault()の後に'このような 'FirstOrDefault()と同様、プロパティまたは列を取得する必要があるため3b26c018-a6e5-4cf4-9547-744991ff5ada – Paul

+0

@NuriYILMAZことです。MyProperty1'。 –

関連する問題