簡體   English   中英

“字符串 []”不包含“包含”的定義

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM