使用Python,我可以使用'in'运算符进行set操作,如下所示:
x = ['a','b','c']
if 'a' in x:
do something
C#中的等价物是什么?
答案 0 :(得分:21)
大多数集合都声明了Contains
方法(例如通过ICollection<T>
接口),但总是有更通用的LINQ Enumerable.Contains
方法:
char[] x = { 'a', 'b', 'c' };
if(x.Contains('a'))
{
...
}
如果您认为这是'错误的方式',您可以编写一个可以纠正错误的扩展程序:
public static bool In<T>(this T item, IEnumerable<T> sequence)
{
if(sequence == null)
throw new ArgumentNullException("sequence");
return sequence.Contains(item);
}
并将其用作:
char[] x = { 'a', 'b', 'c' };
if('a'.In(x))
{
...
}
答案 1 :(得分:2)
要构建Ani的答案,Python的in
词典运算符相当于C#中的ContainsKey
,因此您需要两种扩展方法:
public static bool In<T, V>(this T item, IDictionary<T, V> sequence)
{
if (sequence == null) throw new ArgumentNullException("sequence");
return sequence.ContainsKey(item);
}
public static bool In<T>(this T item, IEnumerable<T> sequence)
{
if (sequence == null) throw new ArgumentNullException("sequence");
return sequence.Contains(item);
}