以下の状況を考慮すると、トップ レベルに割り当てられた中間オブジェクトのリストに属する下位クラス レベルのオブジェクトをすべて取得する必要があります。私が持っている構造は、中間レベルのオブジェクトがトップレベルにぶら下がっていることを意味しますが、ボトムレベルはすべてのコレクションです。したがって、リストが存在しない場合でも、トップ レベルとミドル レベルに効果的に「ぶら下がっている」すべてのボトム オブジェクトを取得する必要があります。ラムダでこれを行う良い方法はありますか?
class Program
{
static void Main(string[] args)
{
List<TopClass> topClasses = new List<TopClass>();
List<MiddleClass> mcList1 = new List<MiddleClass>();
mcList1.Add(new MiddleClass(1));
mcList1.Add(new MiddleClass(3));
mcList1.Add(new MiddleClass(5));
TopClass tc1 = new TopClass(1, mcList1);
topClasses.Add(tc1);
List<MiddleClass> mcList2 = new List<MiddleClass>();
mcList2.Add(new MiddleClass(2));
mcList2.Add(new MiddleClass(4));
TopClass tc2 = new TopClass(2, mcList2);
topClasses.Add(tc2);
List<MiddleClass> mcList3 = new List<MiddleClass>();
mcList3.Add(new MiddleClass(6));
mcList3.Add(new MiddleClass(7));
TopClass tc3 = new TopClass(3, mcList3);
// ** Note not added to the global list
List<BottomClass> bottomClasses = new List<BottomClass>();
bottomClasses.Add(new BottomClass(10, 1));
bottomClasses.Add(new BottomClass(20, 2));
bottomClasses.Add(new BottomClass(30, 3));
bottomClasses.Add(new BottomClass(40, 4));
bottomClasses.Add(new BottomClass(50, 5));
bottomClasses.Add(new BottomClass(60, 6));
bottomClasses.Add(new BottomClass(70, 7));
bottomClass.FindAll(b => ....?
}
}
public class TopClass //Instruments
{
public int Id { get; set; }
public List<MiddleClass> MiddleClasses { get; set; }
public TopClass(int id, List<MiddleClass> middleClasses)
{
this.Id = id;
this.MiddleClasses = middleClasses;
}
}
public class MiddleClass // Sequences
{
public int Id { get; set; }
public MiddleClass(int id)
{
this.Id = id;
}
}
public class BottomClass //SequenceItem
{
public int Id { get; set; }
public int MiddleClassId { get; set; }
public BottomClass(int id, int middleClassId)
{
this.Id = id;
this.MiddleClassId = middleClassId;
}
}
結果は、10 から 50 を含むリストになりますが、60 と 70 は含みません。