[英]'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.