C# 数组无法知道它是否包含字符串

C# 数组无法知道它是否包含字符串,c#,arrays,C#,Arrays,我一定是做错了什么。。。但我想不出来 我有一个包含字符串的数组。我试图确定数组是否包含一些单词,例如Sales drillDownUniqueNameArray[0] = "[Sales Territory].[Sales Territories].[Sales Territory Group].&[North America]";//Inside the string array there is this string in index 0 drillDownUniqueNameA

我一定是做错了什么。。。但我想不出来

我有一个包含字符串的数组。我试图确定数组是否包含一些单词,例如Sales

drillDownUniqueNameArray[0] = "[Sales Territory].[Sales Territories].[Sales Territory Group].&[North America]";//Inside the string array there is this string in index 0

drillDownUniqueNameArray.Contains("S")//Output false!

Array.IndexOf(drillDownUniqueNameArray,"S")//Output -1!  <--Fixed My answer

drillDownUniqueNameArray.Contains("[Sales Territory].[Sales Territories].[Sales Territory Group].&[North America]") //Output true!
我认为应该找到字符串的哪怕一部分


例如,如何查找此数组是否包含S或Sales?

您正在检查数组中是否包含正是S的元素,但我认为您正在尝试检查数组中是否包含包含S的alement

您可以通过以下语句实现这一点:

drillDownUniqueNameArray.Any( str => str.Contains ("S") )

您询问数组是否包含与S完全匹配的字符串

您需要询问数组中是否有任何字符串包含字符S,例如:

drillDownUniqueNameArray.Any(v => v.Contains("S"))
您可以使用LINQ:

var allWithSales = drillDownUniqueNameArray
    .Where(str => str.Contains("Sales"));
忽略该案例:

var allWithSalesIgnoreCase = drillDownUniqueNameArray
     .Where(str => str.IndexOf("sales", StringComparison.OrdinalIgnoreCase) >= 0);
如果要查找包含word SalesString.Split=空白分隔符的所有内容:

var allWordsWithSales = drillDownUniqueNameArray
    .Where(str => str.Split().Contains("Sales", StringComparer.OrdinalIgnoreCase));
现在,您可以使用foreach枚举查询,或使用ToArray或ToList创建集合:

foreach(string str in allWithSales)
    Console.WriteLine(str);

您可以在数组中找到它,但应该在字符串中找到该单词

如果要检查,请使用以下命令:

drillDownUniqueNameArray.Any(x=>x.Contains("Sales"));
如果要获取包含Sales的字符串,请使用以下命令

drillDownUniqueNameArray.Where(x=>x.Contains("Sales"));

当你这样做的时候:

drillDownUniqueNameArray.ContainsS

它不会检查值,你必须这样做:

drillDownUniqueNameArray[0]。ContainsS或drillDownUniqueNameArray.First.ContainsS

像这样,它检查数组内部的值,而不是数组本身

您可以尝试这样做。
drillDownUniqueNameArray[0]。包含

我修正了我的答案。。。我得到-1+1,但也解释一下原因,如果他那样做,我想他不明白。@SimonC Stephan是第一个给出这个答案的人吗?我修正了我的答案。。。我得了-1分