web-dev-qa-db-ja.com

LINQ OrderBy注文しない..何も変更しない..なぜですか?

LINQ OrderByが次のコードで機能しない理由(エラーはありませんが、メソッドはソートされません...)

まずは自分のタイプ

public class IQLinksView
    {
        public int id { get; set; }
        public int catid { get; set; }
        public int? viewed {get;set;}
        public string name {get;set;}
        public string desc {get;set;}
        public string url {get;set;}
        public string pic {get;set;}
        public string cat {get;set;}
    }

次にクエリ:

IQueryable<IQLinksView> newView = 
              from links in this.emContext.tbl_otherlinks
              select new IQLinksView { id = links.pklinkid, catid =
              links.tbl_catgeory.pkcategoryid, viewed = links.linkviewed, name = links.linkname, 
              desc = links.linkdesc, pic = links.linkpicture,   url = links.linkurl, cat =
              links.tbl_catgeory.categoryname };

ここまではすべて問題ありません:-)、しかしその後

newView.OrderBy(x => x.viewed);

何も変更しない、...ページは結果を表示しています...しかし順序はありません...スニフ

私は試してみました(比較オブジェクトを作成しています...):

newView.OrderBy(x => (Int32)x.viewed, new CompareIntegers());

同じ結果、注文なし.。

回避策はありますが、何が欠けているのか疑問に思っています..。

どんな提案でも大歓迎です:-)

20
user1415838

戻り値を捨てないでください。 OrderBy拡張メソッドはdoes not入力を変更します。試してください:

newView = newView.OrderBy(x => x.viewed);

viewedの値が正しいと仮定すると、それが機能しない理由はありません。また、OrderByが順序を台無しにする操作(例:Distinct)の後にあることを確認してください。

ハッピーコーディング!

39
user166390