【问题标题】:How can I do an OrderBy with a dynamic string parameter order on a join query如何在连接查询中使用动态字符串参数 order 执行 OrderBy
【发布时间】:2016-01-10 14:01:20
【问题描述】:

我想这样做:

var test = SqlCompact("OrderID", "ASC")

所以这应该按订单 ID 对以下连接查询进行排序:

var result = (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();

我的尝试:

var result2 = result.ToList();
if (sort == "OrderID"){
 result2 = result.OrderBy("OrderID");
}

但我得到了错误:

'System.Collections.Generic.List' 不包含 'OrderBy' 的定义和最佳扩展方法重载 'System.Linq.Dynamic.DynamicQueryable.OrderBy(System.Linq.IQueryable, string, params object[] )' 有一些无效的参数

【问题讨论】:

  • result.OrderBy(x=>x.OrderID); ??
  • @DarkKnight,我之前确实尝试过,但出现此错误:无法将类型 'System.Linq.IOrderedEnumerable' 隐式转换为 'System.Collections.Generic.List'
  • @user3521029 : result.OrderBy(x=>x.OrderID).ToList() ??

标签: c# mysql linq join sql-order-by


【解决方案1】:

这个怎么样

var result2 = result.ToList();
if (sort == "OrderID"){
 result2 = result.OrderBy(x=>x.OrderID).ToList();
}

【讨论】:

  • 然后返回 result2 时出现错误。对于return result2;。我收到以下错误:无法将类型 'System.Collections.Generic.List' 隐式转换为 'System.Collections.Generic.List'
  • @user3521029 : 在哪一行?
  • 对不起,我忘了写我的整个 SqlCompact 函数。但基本上我想将 result2 返回给 main 方法。这就是我得到那个错误的地方。
  • @user3521029 : 请添加功能码。确保函数的返回类型和 result2 的数据类型匹配。如果没有,请投射它。
猜你喜欢
  • 2011-05-07
  • 2019-11-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多