私は2つのクラスを持っています
public class X
{
string title;
}
public class Y
{
string name;
IList<X> testList;
}
以下のようなリストがあります
IList<Y> myList = new List<Y>();
名前とタイトルに基づいて myList を並べ替えたい
どうすればいいですか?
このようなことを試してみてください。
var sorted = lstY.OrderBy(c => c.name).ToList().Select(d => { d.testList.OrderBy(f => f.title); return d; });
myList.OrderBy(x => x.name).ThenBy(y => y.testList.Min(z=>z.title));
これは 1 つのオプションですが、唯一のオプションではありません。クラス Y に public または internal getter を追加します。
public IEnumerable<X> TestList{get{return testList.OrderBy(x=>x.title);}}
Y のリストを取得するときは、名前で並べ替えることができます。
myList.OrderBy(y=>y.name);
Y のリストを表示するなど、どのような処理を行っていても、Y.name を表示し、TestList 内の foreach X で X.title がソートされます。
またはその2番目のゲッターがなくても:
myList.OrderBy(y=>y.name).Select(y=>new{y.name, testList=y.testList.OrderBy(t=>t.title)}).Dump();