ここでわかるように、メソッドが呼び出されたシーケンスが空First
の場合、メソッドは をスローします。InvalidOperationException
分割の結果には と等しい要素がないためHello5
、結果は空のリストになります。First
そのリストで使用すると、例外がスローされます。
シーケンスが空の場合に例外をスローする代わりに、列挙型の型のデフォルト値を返す代わりに ,を使用することを検討してください(ここFirstOrDefault
に文書化されています)。その場合、呼び出しの結果は になり、コードの残りの部分でそれを確認する必要があります。null
を返すAny
Linq メソッド (ここに文書化されています)を使用する方が、よりクリーンな場合がありますbool
。
string str = "Hello1,Hello,Hello2";
string another = "Hello5";
bool retVal = str.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.Any(p => p.Equals(another));
if (retVal)
{
ViewBag.test = "Match";
}
else
{
ViewBag.test = "No Match"; //not work
}
そして今、三項演算子を使用した必須のワンライナー:
string str = "Hello1,Hello,Hello2";
string another = "Hello5";
ViewBag.test = str.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.Any(p => p == another) ? "Match" : "No Match";
==
ここでは文字列を比較するため にも使用していることに注意してください。これは、C# ではより慣用的であると考えられています。