是否可以使用LINQ使用不同的orderby子句对组进行排序?例如,在一个组中,我希望按升序对结果进行排序,然后在不同的组中按降序排序,方法是使用一个确定排序方向的属性。
我可以通过循环遍历组并对组应用排序来做到这一点,但我的问题是这是否可以作为原始LINQ查询的一部分来完成?这样做会对性能产生负面影响吗?
答案 0 :(得分: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)
}