C# 单个LINQ查询中的动态ORDERBY子句

C# 单个LINQ查询中的动态ORDERBY子句,c#,linq,sorting,C#,Linq,Sorting,是否可以使用LINQ使用不同的orderby子句对组进行排序?例如,在一个组中,我希望按升序对结果进行排序,然后在另一个组中,通过使用一个确定排序方向的属性按降序进行排序 我可以通过在组中循环并对组应用排序来实现这一点,但是我的问题是,这是否可以作为原始LINQ查询的一部分来实现?这样做会对性能产生负面影响吗?如果您在组中有某种类型的属性可用于排序,则可以一次完成。例如,此代码将按int属性分组,并根据值是正值还是负值确定排序类型 var query = from i in someTable

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


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

如果您在组中有某种类型的属性可用于排序,则可以一次完成。例如,此代码将按
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)
            }

可能重复的“确定排序方向的属性”将从何处提取?这对于如何工作是至关重要的。我正要回应您的评论,即属性保存在包含要排序的数据的类中,因此您的解决方案在我看来是一个不错的解决方案。我现在就试试看它对我是否有效。干杯