LINQ排序依据不订货..变着法子。为什么?(LINQ OrderBy not ordering .

2019-06-24 18:56发布

任何想法,为什么LINQ排序依据是不是在下面的代码工作,(有没有错误,但方法不排序...)

首先我自己的类型

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

同样的结果,没有顺序...

我有解决方法,但只是想知道缺什么....

任何建议将理解非常感谢:-)

Answer 1:

不要扔掉返回值。 所述OrderBy扩展方法是发生变异的输入。 尝试:

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

没有任何理由,为什么这是行不通的,假设viewed值是正确的。 此外,确保OrderBy是任何操作后(如Distinct ),这会毁了排序。

编码愉快!



文章来源: LINQ OrderBy not ordering .. changing nothing .. why?