2011-06-21 9 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 orderby降順に動作しない

アイデア?

私はそれを.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によって順序付けされている行のセットを選択するため、これが起こっている(そして彼らは)(個別の後ORDERBYを呼び出してみてください順をめちゃくちゃにされましたdistinct()メソッドを呼び出すまで順序付けされます)。その後、Distinct()メソッドはそれらを順序付けられていない新しいレコードセットに並べ替えます。

+0

これはうまく動作し、私がコード内で今持っていることです。 'orderby c.PKID_Customer descending'がなぜ動作していないのか知りたいです。申し訳ありませんが、これが明確でない場合。 – emragins

+0

は、ソートが機能していない理由で私の答えを編集しました – Atzoya

+0

ああ。面白い。だから.Distinct()を取り除くとそれを修正するはずです。ありがとう! (と確かに、それはした。) – emragins

関連する問題