回答編集履歴

6

一応コードも追加

2019/10/31 05:38

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -3,6 +3,14 @@
3
3
 
4
4
 
5
5
  それは和集合なので、求めるには`LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
6
+
7
+ ```diff
8
+
9
+ - agg1 = List_Comp(agg1, agg2);
10
+
11
+ + agg1 = agg1.Union(agg2).ToList();
12
+
13
+ ```
6
14
 
7
15
 
8
16
 

5

余談の追加

2019/10/31 05:38

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -31,3 +31,49 @@
31
31
  src.AddRange(src2.Except(src));
32
32
 
33
33
  ```
34
+
35
+
36
+
37
+ ----
38
+
39
+ #### 余談
40
+
41
+
42
+
43
+ hihijijiさんの回答には概ね同意で、本来は`dynamic`な型ではなく`ValueTuple`を使うかクラスを定義するべきと思いますが、[このような書き方](https://ufcpp.hatenadiary.org/entry/20071207/1197030259)をすることで匿名型の空リストを定義できるようです。
44
+
45
+
46
+
47
+ ```C#
48
+
49
+ var agg1 = Enumerable.Range(0,0)
50
+
51
+ .Select(x => new
52
+
53
+ {
54
+
55
+ title = "",
56
+
57
+ result = new []
58
+
59
+ {
60
+
61
+ new
62
+
63
+ {
64
+
65
+ Choise = "",
66
+
67
+ Count = 0
68
+
69
+ }
70
+
71
+ }.ToList()
72
+
73
+ })
74
+
75
+ .ToList();
76
+
77
+ var agg2 = agg1.ToList();
78
+
79
+ ```

4

誤字修正

2019/10/31 05:31

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- それは和集合なので、求めるには`LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
5
+ それは和集合なので、求めるには`LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
6
6
 
7
7
 
8
8
 

3

文章の修正

2019/10/31 05:08

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -2,11 +2,11 @@
2
2
 
3
3
 
4
4
 
5
- `LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
5
+ それは和集合なるので、求めるには`LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
6
6
 
7
7
 
8
8
 
9
- (下記コードはZuishinさんに指摘される前の回答で、同じことが実現できますが、冗長的な実装です。)
9
+ 下記回答はZuishinさんに指摘される前の回答で、同じことが実現できますが、冗長的な実装です。
10
10
 
11
11
 
12
12
 

2

指摘内容の修正

2019/10/31 05:07

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -1,6 +1,16 @@
1
1
  > 2つのListを突合し、1つ目のリストに足りない項目を2つ目のリストからAddして補完する
2
2
 
3
3
 
4
+
5
+ `LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
6
+
7
+
8
+
9
+ (下記コードはZuishinさんに指摘される前の回答で、同じことが実現できますが、冗長的な実装です。)
10
+
11
+
12
+
13
+ ----
4
14
 
5
15
  二つの配列の差分は`LINQ`の[Except](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.except?view=netframework-4.8)を使うことで求めることができます。その差分を[AddRange](https://docs.microsoft.com/ja-jp/dotnet/api/system.collections.generic.list-1.addrange?view=netframework-4.8)で追加すれば解決です。
6
16
 
@@ -21,39 +31,3 @@
21
31
  src.AddRange(src2.Except(src));
22
32
 
23
33
  ```
24
-
25
-
26
-
27
- 関数化させたい場合はジェネリックを利用すると良いでしょう。
28
-
29
- ```C#
30
-
31
- public static void AddExcepts<T>(List<T> src, IEnumerable<T> src2)
32
-
33
- {
34
-
35
- src.AddRange(src2.Except(src));
36
-
37
- }
38
-
39
- ```
40
-
41
-
42
-
43
- 拡張メソッドとして利用する場合はこのような感じで使います。
44
-
45
- ```C#
46
-
47
- public static class LINQExtension{
48
-
49
- public static void AddExcepts<T>(this List<T> src, IEnumerable<T> src2)
50
-
51
- {
52
-
53
- src.AddRange(src2.Except(src));
54
-
55
- }
56
-
57
- }
58
-
59
- ```

1

コード修正

2019/10/31 05:03

投稿

BluOxy
BluOxy

スコア2663

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- src.AddRange(src.Except(src2));
21
+ src.AddRange(src2.Except(src));
22
22
 
23
23
  ```
24
24
 
@@ -32,7 +32,7 @@
32
32
 
33
33
  {
34
34
 
35
- src.AddRange(src.Except(src2));
35
+ src.AddRange(src2.Except(src));
36
36
 
37
37
  }
38
38
 
@@ -50,7 +50,7 @@
50
50
 
51
51
  {
52
52
 
53
- src.AddRange(src.Except(src2));
53
+ src.AddRange(src2.Except(src));
54
54
 
55
55
  }
56
56