次のようなオブジェクト グラフがあるとします。
A --> B[] --> B1[]
--> B2[]
--> C[]
B1 と B2 のメンバー/プロパティの特定の条件を確認し、b2.Code が C[] 内のどこかに表示されていることを確認する必要があります。すべての条件が満たされた場合、C および B 配列の要素から変数を使用して新しいオブジェクトを作成する必要があります。私の現在の試みを以下に示しますが、これを LINQ でより簡潔にできるかどうか疑問に思っていますか?
A a = GetA();
List<MyTest> tsts = new List<MyTest>();
foreach (B b in a.B)
{
foreach (B1 b1 in b.B1)
{
if (b1.State == ("READY"))
{
foreach (B2 b2 in b.B2)
{
var tst = (from c in a.C
where c.Code == b2.Code && !c.IsRedundant
select new MyTest
{
Code = c.Code,
BVal = b.BVal,
C1Val = c.C1
}).FirstOrDefault();
if (tst != null)
tsts.Add(tst);
break;
}
}
}
}