c# - 在 LINQ C# 中加入和排序

标签 c# mysql linq linqpad

我得到了以下骨架代码:

var test = SqlCompact(
"OrderID", "ASC", 5, 2,
 out count, out sortCriteria, out sql);

这会调用 SqlCompact 方法,该方法执行表订单、员工和客户的联接,然后按输入进行订单,例如“ASC”和“列名称”。

我已经使连接查询正常工作,但不确定如何根据输入对结果进行排序。这是我的 SqlCompact 方法代码:

public List<MyJoin> SqlCompact(
    string sort, string sortDir, int rowsPerPage, int page, 
    out int count, out string sortCriteria, out string sql) {    

var cec = new SqlCeConnection(
    string.Format(@"Data Source={0}\Northwind.sdf", Path));
var nwd = new DataContext(cec);

nwd.Log = new StringWriter();
var orders = nwd.GetTable<Order>();
var employees = nwd.GetTable<Employee>(); //
var customers = nwd.GetTable<Customer>(); //

count = orders.Count();
sortCriteria = "";

 var q = (from od in orders
        join em in employees on od.EmployeeID equals em.EmployeeID
        join ct in customers on od.CustomerID equals ct.CustomerID
        //orderby em.EmployeeID
        select new
        {
            od.OrderID,
            od.ShipCountry,
            ct.CompanyName,
            ct.ContactName,
            FullName = em.FirstName + ' '+ em.LastName, 
        }).ToList();

q.Dump();

sortCriteria:由 sort 和 sortDir 组成的字符串 - 采用动态 LINQ 可直接使用的格式,例如

OrderID ASC 
ContactName DESC, OrderID DESC

最佳答案

这就是你想要做的: if (sort == "OrderId") { q = q.OrderBy(x => x.OrderId); }

尽管如此,将列名称作为字符串传递并不是一个好方法。

关于c# - 在 LINQ C# 中加入和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33078038/

相关文章:

PHP - 在 MySQL 数据库中存储文本

mysql - HTTP 状态 500 - 请求处理失败;嵌套异常是 org.hibernate.exception.ConstraintViolationException : could not execute update query

c# - StackOverflowException 对嵌套数据使用 Linq(Kit)

c# - 使用 Stream writer 将特定字节写入文本文件

c# - 在 ASP.NET Core 中注入(inject) IUrlHelper

c# - 在 MVC5 中使用 Html.DisplayFor() 的日期格式

c# - RDLC 报告中的求和时间

php - CakePHP 3.0 : PDO issues

c# - LINQ to Entities 无法识别方法 'Boolean Exists(System.Predicate` 1[Entities.Connection])' 方法

c# - 如何使用 LINQ 从 C# 中的 List<String> 获取 "One -one"排列字符串