C# 如何使用LINQ对集合中的每个字符串调用ToLower()?
我的问题是:C# 如何使用LINQ对集合中的每个字符串调用ToLower()?,c#,linq,C#,Linq,我的问题是: m_SelectedHandler = m_ListOfHandlers.SingleOrDefault(h => h.CountryNames.Contains(country.ToLower()); country是包含上述赋值的方法的字符串和参数CountryNames是字符串列表。如何对CountryNames中的每个字符串调用ToLower,以便获得此查询的有效匹配项。是否有更好的方法使用LINQ进行不区分大小写的比较?如下所示: m_ListOfHandlers
m_SelectedHandler = m_ListOfHandlers.SingleOrDefault(h => h.CountryNames.Contains(country.ToLower());
country
是包含上述赋值的方法的字符串和参数CountryNames
是字符串列表。如何对CountryNames
中的每个字符串调用ToLower
,以便获得此查询的有效匹配项。是否有更好的方法使用LINQ进行不区分大小写的比较?如下所示:
m_ListOfHandlers.SingleOrDefault(h => h.CountryNames.Exists(cn => cn.ToLower() == country.ToLower());
是的,您可以为该方法指定
IEqualityComparer
。例如,您可以使用:
这也避免了通过调用
ToLower
创建的临时字符串。您只需使用。任何类似以下内容的:
m_SelectedHandler = m_ListOfHandlers
.SingleOrDefault(h => h.CountryNames
.Any(countryName => countryName.ToLower() == country.ToLower()));
或者将==
替换为`。类似这样的等式:
countryName.Equals(country, StringComparison.OrdinalIgnoreCase)
要进行不区分大小写的匹配,可以使用ToLower进行不区分大小写的比较==fail。
countryName.Equals(country, StringComparison.OrdinalIgnoreCase)