C#でオブジェクトリストをLINQで並べ替えるには、このリストを特定の属性を持つ子リストで並べ替えたい:nhibernateに基づくクラス構造、すべての属性はpublic virtual 。子リスト属性で親オブジェクトリストを注文する
ParentobjectsList.OrderBy(x => x.ChildobjectList.Attribute);
これをどのようにして実現できますか。
C#でオブジェクトリストをLINQで並べ替えるには、このリストを特定の属性を持つ子リストで並べ替えたい:nhibernateに基づくクラス構造、すべての属性はpublic virtual 。子リスト属性で親オブジェクトリストを注文する
ParentobjectsList.OrderBy(x => x.ChildobjectList.Attribute);
これをどのようにして実現できますか。
あなたの構造はこのような何かれるように聞こえる:この場合、それは各ParentObject
のための潜在的に多くの値があるので、単純に、ChildObject.Attribute
プロパティでIEnumerable<ParentObject>
を注文することも可能
class ChildObject
{
public int Attribute { get; set; }
}
class ParentObject
{
public IEnumerable<ChildObject> ChildobjectList { get; set; }
}
をしません。 Linqはどのような値を注文に使用するのかを知っていますか?何らかの集約関数を使用する必要があります。そこに多くのオプションがありますが、ここでのほんの一部です:
Max
の最初の項目でソートするChildobjectList
First
で最小の要素でソートするChildobjectList
Min
で最大の要素でソートしますChildobjectList
Sum
Attribute
のタイプは正確にどちらを使用するかは、正確な要件によって異なります。いずれにしても、このように使用します:
var result =
ParentobjectsList.OrderBy(x => x.ChildobjectList.Max(c => c.Attribute));
var sortedList = ParentobjectsList.OrderBy(x => x.ChildobjectList.Attribute);
これは私を助けません – Higune
ありがとう、これは私を助けます – Higune