【问题标题】:Dynamic order by clause in a single LINQ query单个 LINQ 查询中的动态 order by 子句
【发布时间】:2014-02-25 09:44:50
【问题描述】:

是否可以使用 LINQ 使用不同的 orderby 子句对组进行排序?例如,我想在一组中对结果进行升序排序,然后在另一组中使用确定排序方向的属性以降序排序。

我可以通过遍历组并在组上应用排序来做到这一点,但是我的问题是这是否可以作为原始 LINQ 查询的一部分来完成?这样做会对性能产生负面影响吗?

【问题讨论】:

标签: c# linq sorting


【解决方案1】:

如果您在组中有某种属性可用于排序,那么是的,它可以一次性完成。例如,此代码将按int 属性分组,并根据值是正数还是负数来确定排序类型

var query = from i in someTable
            group i by i.SomeIntProperty into g
            let sortAsc = g.Key % 2 == 0 
            select new 
            {
                Key = g.Key,
                Results = sortAsc ? g.OrderBy(x => x.SomeProperty) : 
                    g.OrderByDescending(x => x.SomeProperty)
            }

【讨论】:

  • 我正要回复您的评论,即该属性保存在包含要排序的数据的类中,因此您的解决方案对我来说看起来不错。我现在就试一试,看看它是否适合我。干杯!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 2014-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多