C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: 複数の値のどれかと一致するかどうかを調べたい


(過去ログ 86 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■51418 / inTopicNo.1)  複数の値のどれかと一致するかどうかを調べたい
  
□投稿者/ ケッポヨ (1回)-(2010/07/05(Mon) 14:39:13)

分類:[VB.NET/VB2005 以降] 

変数aが"banana"または"melon"または"peach"である場合に変数bをTrueにする場合、VBでは

b = (a = "banana" OrElse a = "melon" OrElse a = "peach")

とすれば何とかできますが、a = ○○ OrElse...を繰り返し記載するのは面倒だし、
「変数aが"banana"または"melon"または"peach"」という条件がぱっと見で分かりにくいと感じます。

例えば、SQLでいうところの

a IN ('banana', 'melon', 'peach')

のような、比較対象が複数あるような比較文の書き方ってあるのでしょうか?
VBは2008を使用しています。
引用返信 編集キー/
■51419 / inTopicNo.2)  Re[1]: 複数の値のどれかと一致するかどうかを調べたい
□投稿者/ タスク (1回)-(2010/07/05(Mon) 14:55:11)
No51418 (ケッポヨ さん) に返信
Contains メソッドが実装されているコレクション等に
格納するとか。
引用返信 編集キー/
■51420 / inTopicNo.3)  Re[1]: 複数の値のどれかと一致するかどうかを調べたい
□投稿者/ 渋木宏明 (17回)-(2010/07/05(Mon) 14:56:01)
渋木宏明 さんの Web サイト
> 例えば、SQLでいうところの
>
> a IN ('banana', 'melon', 'peach')
>
> のような、比較対象が複数あるような比較文の書き方ってあるのでしょうか?

Array.Find() 使うとか。

あるいは、LINQ を使えばもっとクエリチックな書き方できます。
引用返信 編集キー/
■51421 / inTopicNo.4)  Re[2]: 複数の値のどれかと一致するかどうかを調べたい
□投稿者/ honefai (1回)-(2010/07/05(Mon) 14:57:50)
比較対象が固定数で2〜3個しかないなら、OrElseで羅列する方が可読性が高いと思います。
比較対象がN個で可変数あるなら、比較対象を配列に代入してContainsを使えばよいかと思います。
引用返信 編集キー/
■51435 / inTopicNo.5)  Re[1]: 複数の値のどれかと一致するかどうかを調べたい
□投稿者/ じゃんぬねっと (6回)-(2010/07/05(Mon) 21:46:48)
No51418 (ケッポヨ さん) に返信
> 例えば、SQLでいうところの
>
> a IN ('banana', 'melon', 'peach')
>
> のような、比較対象が複数あるような比較文の書き方ってあるのでしょうか?

ParamArray な引数を持つメソッドを作成する。(作業時間 1 分以内)
http://social.msdn.microsoft.com/Forums/ja-JP/vsgeneralja/thread/814358a0-9f8f-4763-ac32-cb8d47dd9af3
引用返信 編集キー/
■51449 / inTopicNo.6)  Re[2]: 複数の値のどれかと一致するかどうかを調べたい
□投稿者/ 刈歩 菜良 CTP (1回)-(2010/07/06(Tue) 17:01:50)
刈歩 菜良 CTP さんの Web サイト
単純にSelect Caseで書けちゃいますよ。

Dim a As String = "banana"
Dim b As Boolean

Select Case a
  Case "banana", "melon", "peach"
    b = True
  Case Else
    b = False
End Select

ではいかが?
引用返信 編集キー/
■51469 / inTopicNo.7)  Re[1]: 複数の値のどれかと一致するかどうかを調べたい
□投稿者/ 謎のRSan (1回)-(2010/07/07(Wed) 04:46:01)
謎のRSan さんの Web サイト
{"A", "B", "C"}.Contains(a)

で良いそうです。
なにこのC#って感じのVBなコードですw

http://blogs.wankuma.com/rti/archive/2010/07/06/191020.aspx#191037

引用返信 編集キー/
■51470 / inTopicNo.8)  Re[2]: 複数の値のどれかと一致するかどうかを調べたい
□投稿者/ 町田 (2回)-(2010/07/07(Wed) 09:35:38)
No51469 (謎のRSan さん) に返信
> {"A", "B", "C"}.Contains(a)
>
> で良いそうです。
> なにこのC#って感じのVBなコードですw
>
> http://blogs.wankuma.com/rti/archive/2010/07/06/191020.aspx#191037
>
引用返信 編集キー/
■51493 / inTopicNo.9)  Re[3]: 複数の値のどれかと一致するかどうかを調べたい
□投稿者/ ケッポヨ (2回)-(2010/07/07(Wed) 17:36:32)
謎のRSanさんの例をアレンジして、以下のようにしてうまくいきました。

b = (New String() {"banana", "melon", "peach"}).Contains(a)

ありがとうございました。

あと、あえてSelect Caseを使用しなかったのは、今回の内容として、
・変数aが"banana"または"melon"または"peach"である場合に変数bをTrueにする
の他に
・変数aが"lemon"または"melon"または"cherry"である場合に変数cをTrueにする
というものがあり、この場合、VBのSelect Caseでは、以下のように書くことができず、

Select Case a
  Case "banana", "melon", "peach"
    b = True
  Case ""lemon", "melon", "cherry"
    c = True
End Select

結局、複数Select文が必要なため、他の方法を模索していました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -