我正在使用实体框架从数据库中检索数据。
结果由在“搜索文本框”中输入的值过滤。
var searchKey = this.TextBoxSearch.Text;
var products = this.databaseManager.Products.Where(x => x.Name.Contains(searchKey)).Select(x => x.Name);
然后将结果按字母顺序排序。
products = products.OrderBy(x => x);
现在,我想对结果进行排序:开头包含搜索键的结果要比文本中其他位置包含搜索键的结果要早。
例子:
当用户键入“ iP”时,过滤结果应如下所示:
iPhone 4S,iPhone 5,多合一iP电话......
当然,在正常情况下,一部IP电话中的所有电话都是列表中的第一项。因为结果是按字母顺序排序的。但就我而言。用户的搜索关键字必须是主要关键字。
是否可以使用C#Linq [.NET 4.5]或在SQL Server中实现?如果这可以通过SQL查询完成,那也很好。
var products = this.databaseManager.Products.Where(x => x.Name.Contains(searchKey)).Select(x => new {Name=x.Name,Index=x.Name.IndexOf(searchKey)}).OrderBy(a=>a.Index).ToList();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句