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

回答編集履歴

1

追加

2020/10/26 03:57

投稿

kikukiku
kikukiku

スコア537

answer CHANGED
@@ -18,12 +18,9 @@
18
18
  var result = db.Select(x => new Result { machine_cd = x.machine_cd, bunrui_cd = x.bunrui_cd, delete = false } ).ToList();
19
19
 
20
20
  //削除対象をマークする
21
- foreach(var x in haishiBunrui)
21
+ foreach (var y in result.Where(y => haishiBunrui.Any(x => y.bunrui_cd == x)))
22
22
  {
23
- foreach(var y in result.Where(y => y.bunrui_cd == x))
24
- {
25
- y.delete = true;
23
+ y.delete = true;
26
- }
27
24
  }
28
25
 
29
26
  //テスト
@@ -37,4 +34,23 @@
37
34
  }
38
35
  }
39
36
  }
37
+ ```
38
+
39
+ 無理やりLINQ使ってみた。
40
+ ```C#
41
+ var test = db.Select(y => haishiBunrui.Any(x => y.bunrui_cd == x)
42
+ ? new Result { machine_cd = y.machine_cd, bunrui_cd = y.bunrui_cd, delete = true }
43
+ : new Result { machine_cd = y.machine_cd, bunrui_cd = y.bunrui_cd, delete = false })
44
+ .GroupBy(g => g.machine_cd);
45
+
46
+ //テスト
47
+ foreach (var g in test)
48
+ {
49
+ if (g.All(x => x.delete == true))
50
+ {
51
+ Console.WriteLine($"マシンコード({g.Key})は削除できません。");
52
+ var 分類 = g.Select(y => y.bunrui_cd).ToList();
53
+ Console.WriteLine($"対象分類は({string.Join(",", 分類)})");
54
+ }
55
+ }
40
56
  ```