C#, C♯, C#相談室 Part96

レス数が900を超えています。1000を超えると表示できなくなるよ。
1デフォルトの名無しさん (ワッチョイ 7633-kUv4)
垢版 |
2021/12/20(月) 11:03:25.88ID:sdn/+VfW0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512

■Visual Studio 2017 Community(無償の統合開発環境)等はこちら
http://www.visualstudio.com/downloads/

■コードを貼る場合はこちら
http://ideone.com/

■前スレ
C#, C♯, C#相談室 Part94
https://mevius.5ch.net/test/read.cgi/tech/1553075856/

■次スレは>>970が建てる事。
建てられない場合は他を指定する事。
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2022/12/18(日) 21:34:00.76ID:cciNjKw00
var rst = src.Select(c =>
 if(c == 'a') c = '1';
 else if(c == 'b') c = '2';
 else {そのまま}
);

とある文字列に対してSelectで条件分岐の操作ってできるんでしょうか?
このような操作はエラー出てしまいます。
for文使う意外でLinqで可能ですか?
2022/12/18(日) 21:35:09.61ID:cciNjKw00
var rst = src.Select(c => {
 if(c == 'a') c = '1';
 else if(c == 'b') c = '2';
 else {そのまま}
});
920デフォルトの名無しさん (ワッチョイ f376-dmHX)
垢版 |
2022/12/18(日) 21:43:50.09ID:/B6+jV4p0
Selectは、 TResult Func(TSource c); 相当の関数を求めてる。
1文で書けないラムダは{}で囲ってreturnする必要がある。

var rst = src.Select(c => {
 if(c == 'a') return '1';
 else if(c == 'b') return '2';
 else {return c;}
});

条件がそこそこ複雑になるから関数化した方が読みやすくなるけどね

static char func(char c){
if(c == 'a') return '1';
 else if(c == 'b') return '2';
 else {return c;}
}
var rst = src.Select(func);
921デフォルトの名無しさん (ワッチョイ a301-laf+)
垢版 |
2022/12/18(日) 23:07:10.29ID:HNplfub60
普通にif文書きゃええやん
2022/12/18(日) 23:17:05.27ID:ses1WoSTM
お前ら大丈夫か?
落ち着け

とある文字列と書いてあるのを意図的に無視してんのか?
2022/12/18(日) 23:35:46.66ID:ses1WoSTM
追加情報
三項演算子を二回使うと二回分の変換を式で表せる
c++なんかでは多用されるテクニック

実際に使うとなると
string.Replace
2022/12/18(日) 23:58:06.12ID:ses1WoSTM
ごめんごめん
すげーまちがえてんな
3項演算子二重で使って3つの値を出せる式になる

それと古のテクニックを使う方法もあるけどもう寝る時間だな…
レス数が900を超えています。1000を超えると表示できなくなるよ。
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況