C# 如何将包含searchresult的var转换为Lower?
我做了一个学校作业,我们需要能够在程序控制台应用程序中搜索 我创建了一个对象Sodacrate,它包含一个索引长度为24的对象数组sodabottles。 sodabottles有名称、价格和类型变量 根据我们的老师的说法,我们不能使用列表,可能是因为他想让我们找到其他方法来解决这个问题,这就是数组包含对象的原因 当我搜索时,我可以搜索sodabottle的确切名称,也可以搜索第一个字母。例如,如果我有一瓶可口可乐,而且我正在搜索可口可乐,那么我就找不到匹配的。如果我搜索c、c或可口可乐,甚至可口可乐,我会找到一个匹配项 如何使搜索结果转换为更低?我尝试过这个,也搜索过这个问题,但没有找到任何明确的解决方案 它给了我一个编译错误 错误CS0029无法将类型“string”隐式转换为“System.Collections.Generic.IEnumerable”thesodacrate C:\Users\Benny\source\repos\thesodacrate\thesodacrate.cs” 如果这看起来很简单的话,我很抱歉,但我几乎要为此而秃顶了。我还需要说,这对我来说是一个全新的领域,我主要是通过反复试验来解决这个问题 我已经编辑了代码,所以它看起来是最新的。entries=第7行的条目创建编译错误C# 如何将包含searchresult的var转换为Lower?,c#,search,C#,Search,我做了一个学校作业,我们需要能够在程序控制台应用程序中搜索 我创建了一个对象Sodacrate,它包含一个索引长度为24的对象数组sodabottles。 sodabottles有名称、价格和类型变量 根据我们的老师的说法,我们不能使用列表,可能是因为他想让我们找到其他方法来解决这个问题,这就是数组包含对象的原因 当我搜索时,我可以搜索sodabottle的确切名称,也可以搜索第一个字母。例如,如果我有一瓶可口可乐,而且我正在搜索可口可乐,那么我就找不到匹配的。如果我搜索c、c或可口可乐,甚至可
Console.Write("Type in your search: ");
var keyword = Console.ReadLine();
keyword = keyword.ToLower();
Console.WriteLine(keyword);
var entries = bottles.Where(entry => entry.SodaBottleName !=null && entry.SodaBottleName.Contains(keyword));
entries = entries.ToString().ToLower();
if (entries.Count() == 0)
{
Console.Write("Didn´t find any match");
Console.WriteLine("Press enter to return to mainmenu");
}
else
{
foreach (var entry in entries)
{
Console.WriteLine("{0} - {1} $", entry.SodaBottleName, entry.SodaBottlePrice);
}
Console.WriteLine("You´ve added {0} bottles that match your search: {1}.", entries.Count(), keyword);
Console.WriteLine("Press enter to return to mainmenu");
}
Console.ReadLine();
您需要使两个字符串降低。关键字和字符串
var keyword = Console.ReadLine().ToLower();
及
.字符串是不可变的。这意味着keyword.ToLower不会更改keyword,而是返回一个包含ToLower结果的新字符串。如果你想让关键字用小写,你需要写keyword=keyword.ToLowerSorry。我认为我不能使用Equals,因为我需要能够键入单词的片段。从我的理解来看,等式将两个字符串相互比较并返回true或false?如果我在搜索字段中输入coca,并且我希望searchmethod返回包含coca-Cola名称的所有索引,那么Equals将返回false?感谢Steve澄清这一点。我现在在我的代码中已经改变了这一点,但是如果我在searchresult上做同样的操作,它会给我一个编译错误。严重性代码说明项目文件行抑制状态错误CS0029无法将类型“string”隐式转换为“System.Collections.Generic.IEnumerable”thesodacrate C:\Users\Benny\source\repos\thesodacrate\thesodacrate.cs 243,这不是在C中比较字符串的方式。这里应该是entry.SodaBottleName.IndexOfkeyword,StringComparison.CurrentCultureIgnoreCase>=0,以避免调用ToLower时发生不必要的复制操作和内存分配。
entry.SodaBottleName.ToLower().Contains(keyword)