如你看到的here http://msdn.microsoft.com/en-us/library/bb535050.aspx, the First
方法抛出一个InvalidOperationException
当调用它的序列为空时。由于分割结果中没有元素等于Hello5
,结果是一个空列表。使用First
该列表上将抛出异常。
考虑使用FirstOrDefault
,而不是(记录here http://msdn.microsoft.com/en-us/library/bb340482.aspx),当序列为空时,它不会抛出异常,而是返回可枚举类型的默认值。在这种情况下,调用的结果将是null
,您应该在代码的其余部分中检查这一点。
仍然使用可能更干净Any
Linq 方法(已记录here http://msdn.microsoft.com/en-us/library/system.linq.enumerable.any.aspx),它返回一个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
}
现在,强制性的一个班轮使用三元运算符 http://msdn.microsoft.com/en-us/library/ty67wk28%28v=vs.80%29.aspx:
string str = "Hello1,Hello,Hello2";
string another = "Hello5";
ViewBag.test = str.Split(",".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
.Any(p => p == another) ? "Match" : "No Match";
请注意,我还使用了==
这里比较字符串,这在 C# 中被认为更惯用。