22

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());

同じ結果、順序付けなし...

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

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

4

2 に答える 2

54

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

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

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

ハッピーコーディング!

于 2012-05-24T19:20:52.843 に答える