【发布时间】:2010-04-16 21:59:52
【问题描述】:
我想搜索具有我在my post 中询问的名称、类别和来源信息的乐器。
但现在我想通过与关键字的相似性/相等性对结果进行排序/分组,例如。 如果我有清单
{ 鼓、三角钢琴、吉他、吉他、竖琴、钢琴}
如果我查询“p”,结果应该是 { Piano, Grand Piano, Harp }
但由于源列表的顺序,它首先显示竖琴
如果我将 {Grand Piano} 添加到列表中并查询“钢琴”
结果应该像 { Piano, Grand Piano }
或查询“吉他”
它应该是 { Guitar, Guitarrón }
这是我的代码
static IEnumerable<MInstrument> InstrumentsSearch(IEnumerable<MInstrument> InstrumentsList, string query, MInstrument.Category[] SelectedCategories, MInstrument.Origin[] SelectedOrigins)
{
var result = InstrumentsList
.Where(item => SelectedCategories.Contains(item.category))
.Where(item => SelectedOrigins.Contains(item.origin))
.Where(item =>
{
if (
(" " + item.Name.ToLower()).Contains(" " + query.ToLower())
|| item.Name.IndexOf(query) != -1
)
{
return true;
}
return false;
}
)
.Take(30);
return result.ToList<MInstrument>();
}
或者结果可能类似于我称之为“按出现顺序”的my old self-invented algorithm,
这对我来说没问题。
进一步的事情是我需要搜索名称、类别或来源,例如。
如果我输入“意大利”,它应该会找到钢琴或来自意大利的东西。
或者如果我输入“string”,它应该会找到 Guitar。
有没有办法做这些事情,请告诉我。
提前致谢。
【问题讨论】:
-
为什么是这个社区维基?不应该。
-
对不起,我是新来的,我不知道社区 wiki 是什么,我可能不小心检查了它(我真的不知道它被检查了!)。现在我正在阅读社区是什么。对不起
标签: c# linq search linq-to-objects