LINQを利用して、クラスの中のディクショナリの中のクラスに持つプロパティの最大値を取得したい
いつも勉強させていただいています。本日は皆様のお知恵を拝借させていただければと思って
質問いたします。
public class TestResult {
public string Kamoku;
public int Tensu;
}
public class Grade {
public int Rank;
public List<TestResult> result;
}
public class Peron {
public int Id;
public string Name;
public Dictionary<string, Grade> dic;
}
上記のようなクラスがある場合に、Tensuの最大値を取得したいのですが、どのように書けば簡潔に取得できますでしょうか。
Person personalData = new Person() などして各プロパティやディクショナリには
値を設定済みという前提ですが、
int MaxTensu = personalData.dic.Values.Max(x => x.result.Max(y => y.Tensu));
この書き方では「シーケンスに要素が要素が含まれていません」でエラーになりました。
↓ のような書き方にするべきでしょうか。よろしくお願いいたします。
int max = 0;
foreach (Grade g in personalData.dic.Values) {
int i = g.result.Max(x => x.Tensu);
if (max < i) {
max = i;
}
}