完整的错误代码:
错误CS1929 'string[]‘不包含“包含”的定义,最好的扩展方法重载'Queryable.Contains(IQueryable,TSource)’需要一个'IQueryable‘类型的接收方。
string[] terms = new string[31];
我正在尝试查看数组是否包含在我的Excel文件中。(使用互操作)
if (terms.Contains(xlWorkSheet.Cells[1, i1 + 1].Value.ToString())) ;
{
}
为什么Contains不在这里工作?
我搜索了,显然,这与类型不一样有关,但在这种情况下,是这样的。他们都是弦乐。
发布于 2018-08-08 19:15:11
数组(string[]
)实现IList
,因此应该有Contains(object o)
方法。但是实现是显式的,这意味着只有当类被视为接口时,才有可能访问该方法:
if (((IList)terms).Contains(xlWorkSheet.Cells[1, i1 + 1].Value.ToString()))
发布于 2018-08-08 18:56:47
有一个扩展方法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
发布于 2018-08-08 18:50:11
您可以使用Array.Exists
并传递一个比较lambda表达式:
if (Array.Exists(terms, elem => elem == xlWorkSheet.Cells[1, i1 + 1].Value.ToString()))
{
...
}
https://stackoverflow.com/questions/51753654
复制相似问题