回答編集履歴
1
コード修正
answer
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
SelectManyで2重のシーケンスを展開して(BとCのタプルにして)やって、それをフィルタにかけたらいいです。
|
2
2
|
```C#
|
3
|
-
foreach(var
|
3
|
+
foreach(var found in listB.SelectMany(b => b.listC, (classB, classC) => (classB, classC))
|
4
|
-
|
4
|
+
.Where(bc => bc.classC == knownClassC)
|
5
|
-
|
5
|
+
.Select(bc => bc.classB))
|
6
6
|
{
|
7
7
|
|
8
8
|
}
|
@@ -10,9 +10,10 @@
|
|
10
10
|
```
|
11
11
|
もし対象となるCが1つしかないとわかっているなら、First/FirstOrDefaultで。
|
12
12
|
```C#
|
13
|
-
var
|
13
|
+
var found = listB.SelectMany(b => b.listC, (classB, classC) => (classB, classC))
|
14
|
-
|
14
|
+
.Where(bc => bc.classC == knownClassC)
|
15
|
-
|
15
|
+
.Select(bc => bc.classB)
|
16
|
+
.First();
|
16
17
|
```
|
17
18
|
|
18
19
|
※ C#7.1以上でコンパイルしてください。
|