linq - 想要一个查询在 Linq 查询中按变量排序

标签 linq linq-to-sql linq-to-entities

如何按列变量排序,因为我在页面上有一个下拉列表,我想根据此下拉列表中选择的排序顺序显示网格,例如价格、代码、评级、描述等,我不想为每个单独编写查询柱子。

from lm in lDc.tbl_Products
where lm.TypeRef == pTypeId
 orderby lm.Code ascending
 select new; 

最佳答案

假设您想通过 SQL 进行排序,那么您需要传入排序列/类型。查询被推迟到您实际执行选择时,以便您可以逐步构建查询,完成后执行它,如下所示:

// Do you query first.  This will NOT execute in SQL yet.
var query = lDC.tbl_Products.Where(p => p.TypeRef == pTypeId);

// Now add on the sort that you require... you could do ascending, descending,
// different cols etc..
switch (sortColumn)
{
    case "Price":
        query = query.OrderBy(q => q.Price);
        break;
    case "Code":
        query = query.OrderBy(q => q.Code);
        break;
    // etc...
}

// Now execute the query to get a result
var result = query.ToList();

如果您想在 SQL 之外执行此操作,则只需获得一个没有排序的基本结果,然后根据您需要的排序条件将 OrderBy 应用于结果。

关于linq - 想要一个查询在 Linq 查询中按变量排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3078465/

相关文章:

c# - 是否可以在不使用 foreach 的情况下重新创建此语句?

c# - 搜索查询 IQueryable<> MVC

c# - 如何根据第一个列表匹配检索子字符串

c# - LINQ: 'Select c' 和 'Select new (c...' 之间的区别

linq-to-entities - Linq to Entity 将字符串转换为正确的大小写

c# - 从 XElement 中获取 2 个属性来创建字典 LINQ

.net - 无法让 Left JOIN linq 查询工作!

linq-to-sql - C# Linq-to-Sql - 应该使用 IDisposable 处理 DataContext

c# - 无法识别 LINQ to Entities 方法 - 扩展方法样式

c# - Linq To Entities 异常不识别方法,无法翻译成存储表达式