質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

Q&A

解決済

1回答

2100閲覧

linqで変数ごとに条件を付ける

ore_cafe

総合スコア2

C#

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

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

0グッド

0クリップ

投稿2020/09/16 05:17

linqでwhereなど使えば条件を指定できると思いますがリンク
これを一部の変数のみに適応することはできますでしょうか?例えば下記のようなリストがあったとします。

var persons = new Person[]{ new Person{ Id = 1,Name = "John", JobId = 1}, new Person{ Id = 2,Name = "Mike", JobId = 1}, new Person{ Id = 3,Name = "Ken", JobId = 2}, new Person{ Id = 4,Name = "Alice", JobId = 1}, new Person{ Id = 5,Name = "Tom", JobId = 2},

これを.Where(x => x.JobId == 1)とやればJobIdが"1"に該当するデータが抽出されると思うのですが、
そうではなくId,Nameは全件取り出したうえで、JobIdについては"1"のみ取り出し、他はnullなり"0"なりとして扱うということがしたいのです。Visual Studio2012使用

//whereをJobIdのみに適応し、下記のような結果を得たい [1,John,1],[2,Mike,1],[3,Ken,0],[4,Alice,,1],[5,Tom,0]

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

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

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

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

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

Zuishin

2020/09/16 05:22

データを変更するなら Where ではなく Select を使ってください。ラムダ式の中で if 文や三項条件演算子が使えます。
ore_cafe

2020/09/16 05:24

ありがとうございます。少し調べてみます。
guest

回答1

0

ベストアンサー

.Select(p => (p.JobId == 1) ? p : new Person{Id = p.Id, Name = p.Name, JobId = 1})
など

投稿2020/09/16 05:30

ozwk

総合スコア13528

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

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

ore_cafe

2020/09/16 07:55

回答いただきありがとうございます。 少しやり方は変わりましたが、同じように参考演算子を使い解決をすることができました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問