C# 如何用string.Contains(string,System.StringComparison)修复错误CA1307?

C# 如何用string.Contains(string,System.StringComparison)修复错误CA1307?,c#,.net-core,C#,.net Core,在我的测试中,我有一个断言包含p.contains(“.Tests”),但它会出错 错误CA1307根据当前用户的区域设置,“string.Contains(string)”的行为可能会有所不同。将“Solution.Tests.PackageTests.\u bowerEnabledProjects”中的此调用替换为对“string.Contains(string,System.StringComparison)”的调用。 所以我想通过:p.Contains(“.Tests”,System.S

在我的测试中,我有一个断言包含
p.contains(“.Tests”)
,但它会出错

错误CA1307
根据当前用户的区域设置,“string.Contains(string)”的行为可能会有所不同。将“Solution.Tests.PackageTests.\u bowerEnabledProjects”中的此调用替换为对“string.Contains(string,System.StringComparison)”的调用。

所以我想通过:
p.Contains(“.Tests”,System.StringComparison)
来修复它,但它会出错:

错误CS0119
“StringComparison”是一种类型,在给定上下文中无效

是一个枚举-警告表明您要指定该枚举中的一个值,例如
StringComparison.Ordinal

但是,此警告在两个方面是错误的:

  • 在我看来,没有
    string.Contains(string,StringComparison)
    方法。的文档甚至给出了如何实现这种方法的示例
  • 警告声称行为取决于区域设置,这是不正确的。
    string.Contains的文档说明:“此方法执行顺序(区分大小写和区域性)比较。”

我建议禁用此警告。

下面是我为那些仍在寻找此问题解决方案的人提供的答案

我也遇到了同样的问题,我修改了下面的代码

        if (!string.IsNullOrWhiteSpace(searchQuery))
        {
            searchQuery = searchQuery.Trim();
            collection = collection.Where(a => a.MainCategory.Contains(searchQuery, StringComparison.Ordinal)
                || a.FirstName.Contains(searchQuery, StringComparison.Ordinal)
                || a.LastName.Contains(searchQuery, StringComparison.Ordinal));
        }

我应该使用不变式文化还是序数?@DiPix:阅读了各种枚举值的描述后,这通常是一个由您决定的问题。(对于机器生成的文本而不是人工生成的文本,序数通常是一种很好的方法;对于您正在编写的测试,几乎可以肯定。)但是,该警告基本上是无效的。我应该使用不变量文化还是序数?@DiPix:查看我的更新答案-该警告基本上是错误的。