Допустим, мне нужно сравнить, является ли строка x "A" , "B" или "C".
С Python я могу использовать оператор in, чтобы легко это проверить.
if x in ["A","B","C"]:
do something
С C # я могу делать
if (String.Compare(x, "A", StringComparison.OrdinalIgnoreCase) || ...)
do something
Может ли это быть чем-то более похожим на Python?
Мне нужно было добавить System.Linq
, чтобы использовать Contain ().
using System;
using System.Linq;
using System.Collections.Generic;
class Hello {
public static void Main() {
var x = "A";
var strings = new List<string> {"a", "B", "C"};
if (strings.Contains(x, StringComparer.OrdinalIgnoreCase)) {
Console.WriteLine("hello");
}
}
}
или
using System;
using System.Linq;
using System.Collections.Generic;
static class Hello {
public static bool In(this string source, params string[] list)
{
if (null == source) throw new ArgumentNullException("source");
return list.Contains(source, StringComparer.OrdinalIgnoreCase);
}
public static void Main() {
string x = "A";
if (x.In("a", "B", "C")) {
Console.WriteLine("hello");
}
}
}
Используйте Enumerable.Contains<T>
, который является методом расширения для IEnumerable<T>
:
var strings = new List<string> { "A", "B", "C" };
string x = // some string
bool contains = strings.Contains(x, StringComparer.OrdinalIgnoreCase);
if(contains) {
// do something
}