我正在使用 Entity Framework 从数据库检索数据。
结果根据搜索文本框中输入的值进行过滤。
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 ordered = products.OrderBy(p => p.IndexOf("iP"));
关于C#,按字母顺序对 LINQ 结果进行排序,然后根据搜索键对其进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19619575/