[英]'string[]' does not contain a definition for 'Contains'
完整的错误代码:
错误 CS1929 'string[]' 不包含 'Contains' 的定义,并且最佳扩展方法重载 'Queryable.Contains(IQueryable, TSource)' 需要类型为 'IQueryable' 的接收器
string[] terms = new string[31];
我正在尝试查看一个数组是否包含我的 Excel 文件中的某些内容。 (使用互操作)
if (terms.Contains(xlWorkSheet.Cells[1, i1 + 1].Value.ToString())) ;
{
}
为什么包含在这里不起作用?
我进行了搜索,显然,这与类型不同有关,但在这种情况下,确实如此。 它们都是字符串。
Array ( string[]
) 实现IList
,因此应该具有Contains(object o)
方法。 但是实现是显式的,这意味着只有当类被视为接口时才能访问该方法:
if (((IList)terms).Contains(xlWorkSheet.Cells[1, i1 + 1].Value.ToString()))
有一个扩展方法System.Linq.Enumerable.Contains
。
string[]
是一个IEnumerable<string>
所以你可以使用它。
using System.Linq;
到文件顶部以使用它。
https://msdn.microsoft.com/en-us/library/system.linq.enumerable.contains(v=vs.110).aspx
您可以使用Array.Exists
并传递一个比较 lambda 表达式:
if (Array.Exists(terms, elem => elem == xlWorkSheet.Cells[1, i1 + 1].Value.ToString()))
{
...
}
添加
using System.Linq;
也有帮助
string[]
不像List<string>
没有Contains()
方法。 您需要在您的数组中运行一个循环并比较每个索引。
for(int i = 0; i < terms.Length; i++)
{
if (terms[i].Contains(xlWorkSheet.Cells[1, i1 + 1].Value.ToString()))
{
// do something
}
}
但是,我建议您不要这样做,而是使用List<string>
。 有了它,您可以像在示例中尝试那样使用List.Contains()
。 在 C# 中,列表在大多数情况下都优于数组。
以下将起作用:
using using System.Linq; //Added to top of code
...
...
string[] someList = {"First", "Second", "Third"}; //In your method
bool result = someList.Contains("First")) //equals true;
bool result2 = someList.Contains("Fourth")) //equals false;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.