C#-Linq:在 linq 中使用 string.equals 进行比较时忽略大小写

C#-Linq: Ignore case when comparing using string.equals in linq

如何在下面的代码中使用 StringComparison 属性?

string _strVariable = "New York";
//nestList is nested list, list of list of objects, city below is an object, not a string 
var _countVar = nestList
  .SelectMany(list => list)
  .Count(city => string.Equals(city, _strVariable));

尝试了以下但它们不起作用,抛出错误。

var _countVar = nestList
  .SelectMany(list => list)
  .Count(city => string.Equals(city, _strVariable,StringComparison.OrdinalIgnoreCase));

var _countVar = nestList
  .SelectMany(list => list)
  .Count(city => string.Equals(city, _strVariable,StringComparer.OrdinalIgnoreCase)); 

你可以这样试试

String.Equals(_strVariable, city, StringComparison.CurrentCultureIgnoreCase)

或使用.ToLower.ToUpper方法,但是,这不是一个好的方法,会导致性能问题。

city.ToUpper() == _strVariable.ToUpper()

已更新

您不能将对象/客户类型与字符串类型进行比较。你可以这样做

.Count(c => string.Equals(c.City, _strVariable,StringComparer.OrdinalIgnoreCase)
-- Let's say You want to compare the City or CityName with the _strVariable