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

質問編集履歴

2

文法の修正

2021/03/30 10:55

投稿

HAL-
HAL-

スコア2

title CHANGED
File without changes
body CHANGED
@@ -41,5 +41,5 @@
41
41
  }
42
42
  ```
43
43
 
44
- 自作での拡張メソッドは共同業のため禁止されてます。
44
+ 新規に拡張メソッド作成する方法は使わないように願いします。
45
45
  C#のバージョンは6.0です。

1

文法の修正

2021/03/30 10:55

投稿

HAL-
HAL-

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,5 @@
1
1
  独自クラスを持つリストが2つあり、2つのリストにあるCDプロパティを比較して
2
- CDに一致するNameプロパティを上書きするようなプログラムえております
2
+ CDに一致するNameプロパティを上書きする処理エレガントに書く方法を教えて下さい
3
3
 
4
4
  以下のプログラムではuser3のCDとowner3のCDが初めに一致するためnameプロパティがowner3に書き換えられます。
5
5
  ※owner99も一致しますが、CDはユニークな想定なため初めに一致したCDを返す想定です。
@@ -23,6 +23,7 @@
23
23
  new Person(){ CD = 3,Name = "owner99"}
24
24
  };
25
25
 
26
+
26
27
  foreach(var userPerson in userPersonList){
27
28
  foreach(var ownerPerson in ownerPersonList){
28
29
  if(userPerson.CD == ownerPerson.CD){
@@ -33,7 +34,7 @@
33
34
  }
34
35
  ```
35
36
 
36
- お見苦しいのですが以下は見様見真似で書いた代入部分のLINQ構文です。
37
+ 以下は試してみた代入部分のLINQ構文です。
37
38
  ```ここに言語を入力
38
39
  foreach(var result in userPersonList.Where(x => ownerPersonList.Select(y => y.CD).Contains(x.CD))){
39
40
  result.Name = ownerPersonList.Where(x => x.CD == result.CD).Select(x => x.Name).FirstOrDefault();
@@ -41,5 +42,4 @@
41
42
  ```
42
43
 
43
44
  自作での拡張メソッドは共同作業のため禁止されております。
44
- C#のバージョンは6.0です。
45
+ C#のバージョンは6.0です。
45
- 上記処理をLINQを用いて一文で処理したいのですが効率的な方法はありますでしょうか?