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

回答編集履歴

6

一応コードも追加

2019/10/31 05:38

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,6 +1,10 @@
1
1
  > 2つのListを突合し、1つ目のリストに足りない項目を2つ目のリストからAddして補完する
2
2
 
3
3
  それは和集合なので、求めるには`LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
4
+ ```diff
5
+ - agg1 = List_Comp(agg1, agg2);
6
+ + agg1 = agg1.Union(agg2).ToList();
7
+ ```
4
8
 
5
9
  下記回答はZuishinさんに指摘される前の回答で、同じことが実現できますが、冗長的な実装です。
6
10
 

5

余談の追加

2019/10/31 05:38

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -14,4 +14,27 @@
14
14
  //TODO:src,src2の初期化をする
15
15
 
16
16
  src.AddRange(src2.Except(src));
17
+ ```
18
+
19
+ ----
20
+ #### 余談
21
+
22
+ hihijijiさんの回答には概ね同意で、本来は`dynamic`な型ではなく`ValueTuple`を使うかクラスを定義するべきと思いますが、[このような書き方](https://ufcpp.hatenadiary.org/entry/20071207/1197030259)をすることで匿名型の空リストを定義できるようです。
23
+
24
+ ```C#
25
+ var agg1 = Enumerable.Range(0,0)
26
+ .Select(x => new
27
+ {
28
+ title = "",
29
+ result = new []
30
+ {
31
+ new
32
+ {
33
+ Choise = "",
34
+ Count = 0
35
+ }
36
+ }.ToList()
37
+ })
38
+ .ToList();
39
+ var agg2 = agg1.ToList();
17
40
  ```

4

誤字修正

2019/10/31 05:31

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  > 2つのListを突合し、1つ目のリストに足りない項目を2つ目のリストからAddして補完する
2
2
 
3
- それは和集合なので、求めるには`LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
3
+ それは和集合なので、求めるには`LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
4
4
 
5
5
  下記回答はZuishinさんに指摘される前の回答で、同じことが実現できますが、冗長的な実装です。
6
6
 

3

文章の修正

2019/10/31 05:08

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,8 +1,8 @@
1
1
  > 2つのListを突合し、1つ目のリストに足りない項目を2つ目のリストからAddして補完する
2
2
 
3
- `LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
3
+ それは和集合なるので、求めるには`LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
4
4
 
5
- (下記コードはZuishinさんに指摘される前の回答で、同じことが実現できますが、冗長的な実装です。)
5
+ 下記回答はZuishinさんに指摘される前の回答で、同じことが実現できますが、冗長的な実装です。
6
6
 
7
7
  ----
8
8
  二つの配列の差分は`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)で追加すれば解決です。

2

指摘内容の修正

2019/10/31 05:07

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -1,5 +1,10 @@
1
1
  > 2つのListを突合し、1つ目のリストに足りない項目を2つ目のリストからAddして補完する
2
2
 
3
+ `LINQ`の[Union](https://docs.microsoft.com/ja-jp/dotnet/api/system.linq.enumerable.union?view=netframework-4.8)を使ってください。
4
+
5
+ (下記コードはZuishinさんに指摘される前の回答で、同じことが実現できますが、冗長的な実装です。)
6
+
7
+ ----
3
8
  二つの配列の差分は`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)で追加すれば解決です。
4
9
 
5
10
  ```C#
@@ -9,22 +14,4 @@
9
14
  //TODO:src,src2の初期化をする
10
15
 
11
16
  src.AddRange(src2.Except(src));
12
- ```
13
-
14
- 関数化させたい場合はジェネリックを利用すると良いでしょう。
15
- ```C#
16
- public static void AddExcepts<T>(List<T> src, IEnumerable<T> src2)
17
- {
18
- src.AddRange(src2.Except(src));
19
- }
20
- ```
21
-
22
- 拡張メソッドとして利用する場合はこのような感じで使います。
23
- ```C#
24
- public static class LINQExtension{
25
- public static void AddExcepts<T>(this List<T> src, IEnumerable<T> src2)
26
- {
27
- src.AddRange(src2.Except(src));
28
- }
29
- }
30
17
  ```

1

コード修正

2019/10/31 05:03

投稿

BluOxy
BluOxy

スコア2663

answer CHANGED
@@ -8,14 +8,14 @@
8
8
 
9
9
  //TODO:src,src2の初期化をする
10
10
 
11
- src.AddRange(src.Except(src2));
11
+ src.AddRange(src2.Except(src));
12
12
  ```
13
13
 
14
14
  関数化させたい場合はジェネリックを利用すると良いでしょう。
15
15
  ```C#
16
16
  public static void AddExcepts<T>(List<T> src, IEnumerable<T> src2)
17
17
  {
18
- src.AddRange(src.Except(src2));
18
+ src.AddRange(src2.Except(src));
19
19
  }
20
20
  ```
21
21
 
@@ -24,7 +24,7 @@
24
24
  public static class LINQExtension{
25
25
  public static void AddExcepts<T>(this List<T> src, IEnumerable<T> src2)
26
26
  {
27
- src.AddRange(src.Except(src2));
27
+ src.AddRange(src2.Except(src));
28
28
  }
29
29
  }
30
30
  ```