2013-10-21 67 views
-5

LINQ-我已經使用order by子句以升序排列來獲取數據庫中所有可用狀態,但它不起作用。 這是代碼:按條款排序不能正常工作

public List<State> GetAllStates() 
    { 
     List<State> p; 
     p = (from a in _db.ProductImageMaps 
      where a.State != "" && a.State != null 
      select new State 
      { 
       Name = a.State 
      }).OrderBy(a=>a.Name).Distinct().ToList(); 
     return p; 

    } 
+3

請界定 「不工作」;你在期待什麼,你會得到什麼? –

+0

這裏沒有linq的問題,你可能有關於訪問數據的問題 – mecek

+0

請參閱。我得到不同的國家名稱,但不是按字母順序。當我嘗試使用order by子句時,它不會對輸出產生任何影響。這就是我所問的。 – Manu

回答

2

通過設計Disitnct返回源的唯一項目的無序順序。

因此,在您按順序排列子句後,您正在調用Distinct,因此您正在丟失您之後的順序。其次,在Distinct後調用OrderBy對我來說更有意義,因爲只訂購不同記錄會更有效。

做這樣的

public List<State> GetAllStates() 
    { 
     List<State> p; 
     p = (from a in _db.ProductImageMaps 
      where a.State != "" && a.State != null 
      select new State 
      { 
       Name = a.State 
      }).Distinct().OrderBy(a=>a.Name).ToList(); 
     return p; 

    }