将包含与 InvariantCultureIgnoreCase 函数一起使用 c#
Use contains with InvariantCultureIgnoreCase function c#
我正在尝试填充包含用户提供的字母的所有结果。
foreach (var item in entries.PhonebookList.Where(ab => ab.FirstName.Contains(fName, StringComparison.InvariantCultureIgnoreCase)))
{
Console.WriteLine("Record: {0} {1} {2} ", item.ItemNumber, item.FirstName, item.LastName);
}
但是我在 Contains
方法中遇到错误。
"No overload for method 'Contains' takes 2 arguments"
将 Contains
与 StringComparison.InvariantCultureIgnoreCase
方法结合使用的最佳方法是什么?
谢谢。
根据文档 here,您应该改用 string.IndexOf(string, StringComparison)
。
所以基本上是:
var entries = new
{
PhonebookList = new[]
{
new { ItemNumber = 1, FirstName = "Leonard", LastName = "Hofstadter" },
new { ItemNumber = 2, FirstName = "Sheldon", LastName = "Cooper" },
new { ItemNumber = 3, FirstName = "Howard", LastName = "Wolowitz" },
new { ItemNumber = 4, FirstName = "Sheng", LastName = "?" },
}
};
var fName = "she";
foreach (var item in entries.PhonebookList.Where(ab => ab.FirstName.IndexOf(fName, StringComparison.InvariantCultureIgnoreCase) >= 0))
{
Console.WriteLine("Record: {0} {1} {2}", item.ItemNumber, item.FirstName, item.LastName);
}
哪个returns:
Record: 2 Sheldon Cooper
Record: 4 Sheng ?
如果您经常需要具有不同 StringComparison
的 Contains
,该文档还提供了一个您可以实现的扩展方法,可以像 Contains
一样使用它(参见提供 link).
您应该使用 String.IndexOf
方法而不是 Contains
。如果对子字符串值在当前实例中的位置感兴趣,可以调用IndexOf
方法获取其第一次出现的起始位置,也可以调用LastIndexOf
方法获取它最后一次出现的起始位置。如果在字符串实例中找到子字符串,则使用 IndexOf(String)
方法。您也可以根据您的目的使用 String.IndexOf
的其他重载,例如带有 String
和 StringComparison
参数的重载。
我正在尝试填充包含用户提供的字母的所有结果。
foreach (var item in entries.PhonebookList.Where(ab => ab.FirstName.Contains(fName, StringComparison.InvariantCultureIgnoreCase)))
{
Console.WriteLine("Record: {0} {1} {2} ", item.ItemNumber, item.FirstName, item.LastName);
}
但是我在 Contains
方法中遇到错误。
"No overload for method 'Contains' takes 2 arguments"
将 Contains
与 StringComparison.InvariantCultureIgnoreCase
方法结合使用的最佳方法是什么?
谢谢。
根据文档 here,您应该改用 string.IndexOf(string, StringComparison)
。
所以基本上是:
var entries = new
{
PhonebookList = new[]
{
new { ItemNumber = 1, FirstName = "Leonard", LastName = "Hofstadter" },
new { ItemNumber = 2, FirstName = "Sheldon", LastName = "Cooper" },
new { ItemNumber = 3, FirstName = "Howard", LastName = "Wolowitz" },
new { ItemNumber = 4, FirstName = "Sheng", LastName = "?" },
}
};
var fName = "she";
foreach (var item in entries.PhonebookList.Where(ab => ab.FirstName.IndexOf(fName, StringComparison.InvariantCultureIgnoreCase) >= 0))
{
Console.WriteLine("Record: {0} {1} {2}", item.ItemNumber, item.FirstName, item.LastName);
}
哪个returns:
Record: 2 Sheldon Cooper
Record: 4 Sheng ?
如果您经常需要具有不同 StringComparison
的 Contains
,该文档还提供了一个您可以实现的扩展方法,可以像 Contains
一样使用它(参见提供 link).
您应该使用 String.IndexOf
方法而不是 Contains
。如果对子字符串值在当前实例中的位置感兴趣,可以调用IndexOf
方法获取其第一次出现的起始位置,也可以调用LastIndexOf
方法获取它最后一次出现的起始位置。如果在字符串实例中找到子字符串,则使用 IndexOf(String)
方法。您也可以根据您的目的使用 String.IndexOf
的其他重载,例如带有 String
和 StringComparison
参数的重载。