C#,按字母顺序对 LINQ 结果进行排序,然后根据搜索键对其进行排序

标签 c# linq sorting search sql-order-by

我正在使用 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/

相关文章:

.net - 我是否应该始终对函数中返回的 LINQ 查询结果调用 .ToArray?

c# - 排序数字数组问题

c# - SQL注入(inject)在winforms中有效吗?

c# - MVC 上的 IdentityServer : What is Audience refering in AddJwtBearer

c# - 有没有办法在没有 Linq to Entities 的情况下使用 SqlSpatialFunctions?

c - 对泛型结构类型数组进行排序

sorting - 编写排序实例的有效方法?

c# - 当我在 Visual Studio 中切换目标框架时,可以使用预编译符号来确定将编译哪些代码片段吗

c# - 如何将一个 mvc3 c# 项目添加到其他可执行项目中?

c# - 查找与给定抵达/出发日期冲突的预订