如何检查某个值是否等于C#中的某个值列表
本文关键字:列表 是否 检查 何检查 | 更新日期: 2023-09-27 18:00:16
IF语句中的OR运算符是什么
很久以前我问过这个问题,当我得到(非常有用的)答案时,我认为你应该能说if (title == "User greeting" || "User name") {do stuff}
。现在,如果不清楚为什么这不起作用,请参考另一个问题及其公认的答案。
然而,我想知道是否有一种方法可以给出一个任意的字符串列表,以检查某个字符串是否等于其中的任何一个。类似if(Array.OR(title, { "User greeting", "User name" })) continue;
的东西有这样的东西吗?还是我在黑暗中拍摄?实现起来似乎相当简单。
您可以尝试Contains运算符:
String[] array = {"One", "Two", "Three"};
if (array.Contains("One"))
{
//Do stuff
}
CorrugatedAir的例子非常好,但如果需要,可以将其内联。
if (new string[] { "test1", "test2", "test3" }.Contains("test1")) Console.WriteLine("it works");
它确实有效:http://ideone.com/QzbvKV(谢谢Soner)
所以我的代码看起来像:if (new string[] { "User greeting", "User name" }.Contains(title)) Console.WriteLine("title contained");
http://ideone.com/PYugJu
附言:谢谢Soner的链接,我以前从未听说过ideone!
更全面、更灵活的字符串比较解决方案:
using System;
using System.Collections.Generic;
using System.Linq;
public static class StringExtensions
{
public static bool EqualsAny(this string target, StringComparer comparer, params string[] values)
{
return target.EqualsAny(comparer, (IEnumerable<string>) values);
}
public static bool EqualsAny(this string target, params string[] values)
{
return target.EqualsAny((IEnumerable<string>)values);
}
public static bool EqualsAny(this string target, StringComparer comparer, IEnumerable<string> values)
{
return values.Contains(target, comparer);
}
public static bool EqualsAny(this string target, IEnumerable<string> values)
{
return values.Contains(target, StringComparer.OrdinalIgnoreCase);
}
}
用法:
if (title.EqualsAny("User greeting", "User name"))
{
//do stuff
}
第页。S.重复@Servy的单词:这样的解决方案适用于小的值集,对于大的值集可以考虑使用Dictionary、HashSet等。
在这种情况下,可以使用Enumerable.Contains()方法。此方法的优点是一旦找到匹配元素,枚举就会终止。
通过使用确定序列是否包含指定的元素默认的相等比较器。
string[] fruits = { "apple", "banana", "mango", "orange", "passionfruit", "grape" };
string fruit = "mango";
bool hasMango = fruits.Contains(fruit);
这是演示。
不要忘记添加System.Linq
命名空间。