C# 将contains与不变量cultureignorecase函数c一起使用#
我正在尝试填充包含用户提供的字母的所有结果C# 将contains与不变量cultureignorecase函数c一起使用#,c#,contains,string-comparison,C#,Contains,String Comparison,我正在尝试填充包含用户提供的字母的所有结果 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.LastNa
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”的重载包含2个参数”
使用Contains
和StringComparison.invariantCultureInogoreCase
方法的最佳方法是什么
谢谢。根据文档,您应该使用
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
一样使用它(请参见提供的链接中的给定示例)。您应该使用String.IndexOf
方法,而不是Contains
。如果您对当前实例中子字符串值的位置感兴趣,可以调用IndexOf
方法来获取其第一次出现的起始位置,也可以调用LastIndexOf
方法来获取其最后一次出现的起始位置<如果在字符串实例中找到子字符串,则使用code>IndexOf(String)方法。此外,您还可以根据自己的目的使用String.IndexOf
的其他重载,例如带有String
和StringComparison
参数的重载。fName-String
的类型是什么?您确定希望包含但等于吗?是的,我需要包含。例如,我有盛和谢尔顿的名字。当我使用Equals并提供“she”作为fName的参数时。它不会显示Sheng和Sheldon,因为它不符合要求的值。我没有得到任何错误。我得到了同样的结果。如果我使用“she”作为fName变量的参数。它没有显示预期的结果。我的名字中有Sheng和Sheldon。请参阅我更新的示例。我想你应该仔细检查你的名字字段是否真的包含你认为它们包含的名字。这就是我观察到的。如果我的fName的参数是“re”,我的名字是Breth Dioren Klarence Rey。将显示这些名称。但是,如果我使用“RE”。它们不会被显示。我用你的新例子检查了它。不管搜索词是什么,它对我都有效。电话簿的类型是什么?是否来自EntityFramework/NHibernate/ORM映射器查询,即IQueryable类型?如果是,您可能需要更改DB表架构(请参阅).public List PhonebookList{get;set;}