🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Q&A

1回答

2310閲覧

c#の処理のリストの処理

yositigu

総合スコア17

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

0グッド

0クリップ

投稿2021/01/19 02:28

編集2021/01/19 03:32

Dictionaryを使っていた処理で、キー重複許容させて処理を回るように改修したいです。

下記、KeyValuePairで対応を考えています。

c#

1List<KeyValuePair<int, string>> list = new List<KeyValuePair<int, string>>(); 2KeyValuePair<int, string> vp1 = new KeyValuePair<int, string>(1, "AAA"); 3KeyValuePair<int, string> vp2 = new KeyValuePair<int, string>(1, "BBB"); 4KeyValuePair<int, string> vp3 = new KeyValuePair<int, string>(2, "CCC"); 5 6list.Add(vp1); 7list.Add(vp2); 8list.Add(vp3); 9``` 10 11⇒このあとに、1個目の要素が`1`のものだけ抽出したリストを作成したいのですが、教えてください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/01/19 02:31

そういう使い方しかしないなら Dictionary<int, List<string>> の方がいいのでは?
yositigu

2021/01/19 02:51

ありがとうございます。 Dictionary<int, List<string>> にした場合、どのように抽出できるか教えていただけないでしょうか。
Zuishin

2021/01/19 02:59

int をキーとし、List<string> を値とした Dictionary です。次のように普通に使えば抽出できると思います。 var dic = new Dictionary<... ... List<string> result = dic[1];
yositigu

2021/01/19 03:11

Dictionary<int, List<string>> の場合、 dic[1]に値をどのように挿入すればいいか教えていただけないでしょうか。
guest

回答1

0

このあとに、1個目の要素が1のものだけ抽出したリストを作成

list.Where( _=>_.Key == 1 ).ToList(); だろうか.


※上記の _ という変数名に関してコメント頂いております.コメント欄も合わせてご参照ください.

投稿2021/01/19 02:36

編集2021/01/19 03:12
fana

総合スコア11985

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Zuishin

2021/01/19 02:37

_ は破棄パターンになるので使わないでください。
fana

2021/01/19 02:53 編集

これでしょうか. https://docs.microsoft.com/ja-jp/dotnet/csharp/language-reference/operators/lambda-expressions#input-parameters-of-a-lambda-expression ある言語バージョンから(?), _ という名前は特別な意味を持つようになったのですね.知りませんでした. ↑のURLにて, > For backwards compatibility, if only a single input parameter is named _, then, within a lambda expression, _ is treated as the name of that parameter. とのことなので,回答の記述だとぎりぎり大丈夫なのかもしれませんが,_ を使うことは良く無さそうです. ご指摘感謝いたします.
Zuishin

2021/01/19 03:07

そうですね。今のところ問題なく使えるコードではあるんですが、将来どうなるか不透明なのと可読性が落ちるのでやめた方がいいと思います。回答を直してもらえたら高評価したいんですが。
fana

2021/01/19 03:14

せっかくなので,元の記述はそのまま残し,このコメント欄を参照すべき旨を追記する形にしてみました. (このような場合の評価について言えば,どちらかと言えば 低 側が見合うように思いますが,どうなんでしょうね)
Zuishin

2021/01/19 03:20

間違ったところは特にない、というか正しい回答なので、私は低評価しません。ただ注意点は書いておきたかったということです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問