【发布时间】:2013-10-27 15:09:27
【问题描述】:
我正在使用实体框架从数据库中检索数据。
结果由在搜索文本框中输入的值过滤。
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);
现在我想以一种方式对结果进行排序;开头包含 search key 的结果排在文本中其他位置包含 search key 的结果之前。
例子:
当用户输入“iP”时 过滤后的结果应该如下:
iPhone 4S、iPhone 5、多合一iP手机……
当然在正常情况下All in one iP phone是列表中的第一项。因为结果是按字母顺序排序的。但就我而言。用户的搜索键必须占主导地位。
这可以使用 C# Linq [.NET 4.5] 还是在 SQL Server 中实现?如果这可以通过 SQL 查询来完成,那也很好。
【问题讨论】:
-
在结果集中找到搜索键的索引,并根据该索引进行排序。
-
@Mokchhya ,我也想这样做,但具体怎么做呢?在哪方面有问题?
-
@rabar,请看下面的答案。
标签: c# linq sorting search sql-order-by