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 回答
0

无跟踪查询

如果结果是只读结果,请考虑在 orderby() 之后使用 asnotracking()。

例子:

query = query.OrderByDescending(x => x.Rating).AsNoTracking();
于 2021-03-01T11:12:36.520 回答