使用包含InvariantCultureIgnoreCase函数c#
我试图填充所有包含用户提供的字母的结果。使用包含InvariantCultureIgnoreCase函数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
方法中出现错误。
“不超载的方法‘包含’需要两个参数”
什么是使用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);
}
将返回:
记录:2谢尔顿·库珀
战绩:4胜?
如果你经常需要用不同的StringComparison
文档还提供了可以实现的扩展方法Contains
,使用它像Contains
(见提供的链接给定的例子)。
它没有为我工作。 – anonymousRey
你会得到什么错误? – ckuri
我没有收到任何错误。我得到了同样的结果。如果我使用“她”作为fName变量的参数。它没有显示预期的结果。我有Sheng和Sheldon的名字。 – anonymousRey
您应该使用String.IndexOf
方法而不是Contains
。如果您对当前实例中子字符串值的位置感兴趣,则可以调用IndexOf
方法来获取其第一次出现的起始位置,或者可以调用LastIndexOf
方法来获取其最后一次出现的起始位置。如果在字符串实例中找到子字符串,则使用IndexOf(String)
方法。您也可以根据您的目的使用String.IndexOf
的其他过载,例如String
和StringComparison
参数。
'fName' - 'string'的类型是什么? –
你确定要'包含'但是'等于'吗? –
是的,我需要包含。例如,我有Sheng和Sheldon作为名字。当我使用Equals时,我提供“she”作为fName的参数。它不会显示盛和谢尔登,因为它没有达到要求的价值。 – anonymousRey