質問するログイン新規登録

回答編集履歴

1

コード修正

2019/03/12 13:03

投稿

toki_td
toki_td

スコア2850

answer CHANGED
@@ -1,8 +1,8 @@
1
1
  SelectManyで2重のシーケンスを展開して(BとCのタプルにして)やって、それをフィルタにかけたらいいです。
2
2
  ```C#
3
- foreach(var b in listB.SelectMany(b => b.listC, (classB, classC) => (classB, classC))
3
+ foreach(var found in listB.SelectMany(b => b.listC, (classB, classC) => (classB, classC))
4
- .Where(bc => bc.classC == knownClassC))
4
+ .Where(bc => bc.classC == knownClassC)
5
- .Select(bc => bc.classB)
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 b = listB.SelectMany(b => b.listC, (classB, classC) => (classB, classC))
13
+ var found = listB.SelectMany(b => b.listC, (classB, classC) => (classB, classC))
14
- .Where(bc => bc.classC == knownClassC))
14
+ .Where(bc => bc.classC == knownClassC)
15
- .FirstOrDefault(bc => bc.classB);
15
+ .Select(bc => bc.classB)
16
+ .First();
16
17
  ```
17
18
 
18
19
  ※ C#7.1以上でコンパイルしてください。