2012-05-24 22 views
15

Bất cứ ý tưởng tại sao LINQ OrderBy không hoạt động trong đoạn mã sau, (không có lỗi nhưng phương pháp không sắp xếp ...)LINQ OrderBy không đặt hàng .. thay đổi không có gì .. tại sao?

Đầu tiên kiểu của riêng tôi

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;} 
    } 

sau đó truy vấn:

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 }; 

cho đến khi tất cả ở đây tốt :-), nhưng sau đó

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

chỉ có gì thay đổi, ... Trang là tải kết quả hiển thị ... nhưng không có trật tự ... sniff

tôi có Hãy thử với (việc tạo ra một đối tượng Comparer ...):

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

kết quả tương tự, không có đặt hàng ...

tôi có cách giải quyết nhưng chỉ tự hỏi những gì là mất tích ....

gợi ý Bất kỳ sẽ được đánh giá cao nhờ rất nhiều :-)

Trả lời

29

Đừng vứt bỏ những Retu giá trị rn. Phương thức mở rộng OrderBy là không không làm thay đổi đầu vào. Hãy thử:

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

Không có lý do gì sẽ không hoạt động, giả định giá trị viewed là chính xác. Ngoài ra, hãy đảm bảo rằng OrderBy là sau bất kỳ thao tác nào (ví dụ: Distinct) sẽ hủy đặt hàng.

Mã hóa vui vẻ!

+0

Siêu! Hoạt động tốt, không nghĩ về sự trở lại, giả định đột biến – user1415838

+0

Cảm ơn rất nhiều, tình yêu công việc này ;-) – user1415838

+0

Aaargh này đã được chính xác vấn đề đơn giản ngu ngốc của tôi. Cảm ơn bạn. – Hannele

Các vấn đề liên quan