2011-06-21 46 views
2
var Customer = (from c in DNAContextSQL.Customers 
           where c.LastName != "" 
           orderby c.PKID_Customer descending 
           select new 
           { 
            c.PKID_Customer, 
            c.OrganizationName, 
            c.FirstName, 
            c.LastName, 
            c.Phone, 
            c.Extension 
           }).Distinct().ToList(); 

我知道這是基本的。我找不到任何好的理由,但爲什麼它不工作。發送給SQL事件探查器的查詢似乎沒有其中的order by子句。linq-> SQL order by descending not working

任何想法?

我可以讓它與.OrderByDescending(...)一起工作,但想知道這個瘋狂背後的原因。

+0

你是跟蹤你的客戶的DNA嗎?這很硬。我想他們會在你推小刷卡機/針機時拿到你的樣品。編輯 - 「這個星期五,血樣5%!」 – asawyer

+0

哈!也許...;) – emragins

+1

你爲什麼使用.Distinct()? – dwerner

回答

5

的不同是通過嘗試調用排序依據的不同()

var Customer = (from c in DNAContextSQL.Customers 
       where c.LastName != "" 
       select new 
        { 
         c.PKID_Customer, 
         c.OrganizationName, 
         c.FirstName, 
         c.LastName, 
         c.Phone, 
         c.Extension 
        } 
       ).Distinct().OrderByDescending(c=>c.PKID_Customer).ToList(); 

發生這種情況是因爲你首先選擇一組由PKID_Customer有序行(他們是後可能搞亂了秩序直到你調用distinct()方法),然後Distinct()方法將它們重新排列成一個新的不同的無序記錄集合。

+0

這是有效的,這是我現在在代碼中。我想知道爲什麼'orderby c.PKID_Customer降序'不起作用。對不起,如果這不明確。 – emragins

+0

編輯我的答案與排序不起作用的原因 – Atzoya

+0

啊。有趣。因此,取出.Distinct()應該修復它。謝謝! (當然,它的確如此。) – emragins