回答編集履歴
6
一応コードも追加
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
余談の追加
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
誤字修正
test
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
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
6
|
|
7
7
|
|
8
8
|
|
3
文章の修正
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
|
-
|
9
|
+
下記回答はZuishinさんに指摘される前の回答で、同じことが実現できますが、冗長的な実装です。
|
10
10
|
|
11
11
|
|
12
12
|
|
2
指摘内容の修正
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
コード修正
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
src.AddRange(src.Except(src
|
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(src
|
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(src
|
53
|
+
src.AddRange(src2.Except(src));
|
54
54
|
|
55
55
|
}
|
56
56
|
|