我正在尝试填充包含用户提供的字母的所有结果。
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);
}
哪个返回:
Record: 2 Sheldon Cooper
Record: 4 Sheng ?
如果您经常需要一个具有不同StringComparison
的Contains
,该文档还提供了一个您可以实现的扩展方法,可以像Contains
一样使用它(请参阅提供的链接中的给定示例)。
关于c# - 将包含与 InvariantCultureIgnoreCase 函数一起使用 c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45659979/