2014-02-25 29 views
1

可以使用LINQ使用不同的orderby子句對組排序嗎?例如,在一個組中,我想按升序對結果進行排序,然後在不同的組中按降序排序,方法是使用可確定排序方向的屬性。在單個LINQ查詢中按子句動態排序

我可以通過遍歷組並對組應用排序來完成此操作,但是我的問題是這是否可以作爲原始LINQ查詢的一部分來完成?這樣做會否對性能產生負面影響?

+0

可能重複的[如何在MVC4使用動態LINQ?](HTTP排序類型://計算器.com/questions/22005488/how-to-use-dynamic-linq-in-mvc4) – alexmac

+0

「*將決定排序方向*的屬性」從何處被取消?這對於如何工作至關重要。 – James

回答

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) 
      } 
+0

我正要回應您的評論,該屬性是在包含要排序的數據的類中進行的,因此您的解決方案對我來說看起來很不錯。我現在就試試看看它是否適合我。乾杯! – Intrepid

+0

該解決方案有效,因此我會接受您的答案。 – Intrepid