【发布时间】:2019-03-31 22:38:43
【问题描述】:
我已经完成了一项学校作业,我们需要能够在我们的程序(控制台应用程序)中进行搜索。
我创建了一个对象 (Sodacrate),其中包含一个索引长度为 24 的对象数组 (sodabottles)。 汽水瓶有名称、价格和类型变量 根据我们老师的说法,我们不能为此使用 LISTS(可能是因为他希望我们找到其他方法来解决这个问题),这就是包含对象的数组的原因。
当我搜索时,我可以搜索汽水瓶的确切名称,也可以搜索第一个字母。例如,如果我有一瓶 Coca Cola(准确拼写)并且我正在寻找 coca,那么我将找不到匹配项。如果我搜索 c、C 或 Coca 甚至 Coca Cola,我会找到匹配项。
如何使搜索结果转换为 ToLower?我试过这个并搜索了问题,但没有找到任何明确的解决方案。
它给了我一个编译错误
错误 CS0029 无法将类型 'string' 隐式转换为 'System.Collections.Generic.IEnumerable' thesodacrate C:\Users\Benny\source\repos\thesodacrate\thesodacrate\Sodacrate.cs 244 Active
如果这看起来很简单,我很抱歉,但我几乎为此而秃顶。我还需要说,这对我来说是一个全新的领域,我主要是通过反复试验来解决这个问题。
我已经编辑了代码,所以它看起来是最新的。 entries = 第 7 行的条目会产生编译错误。
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();
【问题讨论】:
-
字符串是不可变的。这意味着 keyword.ToLower() 不会改变 keyword 而是返回一个带有 ToLower() 结果的新字符串。如果您希望关键字为小写,则需要编写 keyword = keyword.ToLower()
-
对不起,伙计们。我不认为我可以使用 Equals,因为我需要能够输入单词的片段。据我了解,Equals 将两个字符串相互比较并返回 true 或 false?如果我在搜索字段中输入 coca 并且我希望搜索方法返回包含名称 Coca Cola 的所有索引,则 Equals 将返回 false?
-
感谢 Steve 将这一点弄清楚。我现在在我的代码中更改了它,但是如果我在搜索结果上做同样的事情,它会给我一个编译错误。严重性代码说明项目文件行抑制状态错误 CS0029 无法将类型“字符串”隐式转换为“System.Collections.Generic.IEnumerable
”thesodacrate C:\Users\Benny\source\repos\thesodacrate\thesodacrate\Sodacrate。 cs 243 主动