我得到了以下骨架代码:
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/