query = Files
.Where(file => file.Fileinfo.Name.ToUpper().Contains(textBox1.Text.ToUpper()))
.Take(7).ToList();
我讨厌问这个问题,但我根本没有任何进展!这看起来应该是一项微不足道的任务,但我运气不好。
上述查询需要通过文件名列表进行搜索。它将返回列表中的搜索结果,其中包含前 7 个最相关的结果。该事件发生在“KeyPress
”。
尽管如此,它非常不精确,并且还发生了一些非常奇怪的结果。
例如:如果我列表中的项目名称为:“ZeroWidthSplit
”
如果我的文本框包含“Z
”,它就可以工作。如果它包含 ZE
,它就可以工作。如果它包含“ZER
”,它仍然会显示。
如果我输入 ZERO
,它就会从搜索结果中消失!
所以我想我的问题是:如何搜索文件列表,并使其返回前 7 个最相关的结果。
哦,如果只有 4 个相关结果,那也没关系。限制只有 7 个。
另一个例子:
F.x 如果我写“sum of
”作为搜索查询。它返回:
- 77 - 质数之和 5000 不同的方式
- 52 以下连续质数之和 一百万
如果我写“sum of p
”,它返回:
- 77 - 质数之和 5000 不同的方式
如果我写“c 的总和
”它什么都不返回...
我可以举出更多奇怪的例子。
最佳答案
这个错误听起来确实很奇怪,但正如 Konamiman 指出的那样,稍微重构一下也无妨,尽管我不喜欢使用 ToUpper 或 ToLower。我将按照以下方式进行:
string theText = textBox1.Text;
query = Files
.Where(file => file.Fileinfo.Name.IndexOf(theText,
StringComparison.OrdinalIgnoreCase) != -1)
.Take(7).ToList();
关于c# "like/contains"搜索列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1721337/