2013-01-09 33 views
6

thể trùng lặp:
LINQ2SQL: Cannot convert IQueryable<> to IOrderedQueryable errorKhông thể ngầm chuyển đổi loại 'System.Linq.IQueryable <>' thành 'System.Linq.IOrderedQueryable <>'

Tôi có lỗi này trong searchString của bộ điều khiển của tôi ..

đây là mã của tôi:

if (!String.IsNullOrEmpty(searchString)) 
{ 
    posts = posts.Where(post => post.Body == searchString); 
} 

Tôi đang sử dụng mã này để tìm kiếm trong Chỉ mục của mình. Tôi đã khai báo điều gì sai ở đây hay gì đó? Tôi đã thử googling nhưng không tìm thấy một câu trả lời rõ ràng. Cảm ơn trước cho bất kỳ ai có thể giúp tôi ..

+0

Bài đăng và cách bạn khai báo/sử dụng? – V4Vendetta

+1

Chủ đề này trông tương tự: http://stackoverflow.com/questions/1732236/linq2sql-cannot-convert-iqueryable-to-iorderedqueryable-error datatype là gì? Nó từ đâu đến? Bạn đang làm bất kỳ phân loại (orderby) trên nó bất cứ nơi nào? – JLRishe

Trả lời

16

Nguyên nhân có thể xảy ra nhất là bạn đã sử dụng khai báo ngụ ý var tiềm ẩn cho posts trong truy vấn có số OrderBy. Nếu bạn thay thế bằng

IQueryable<Post> posts = someSource.Where(cond).OrderBy(/*the culprit*/); 

lỗi sẽ biến mất.

+0

whoa .. Yeah bạn đúng dude .. Câu trả lời của bạn hoạt động hoàn hảo cho tôi. Nó hoạt động .. Cảm ơn :) .. !! – bot

0

bài đăng là IOrderedQueryable và cuộc gọi đến nơi sẽ trả về IQueeryable. Tại sao bạn không khai báo biến một cách rõ ràng và xem nó có khắc phục được sự cố không.

5

Biến số posts của bạn có vẻ thuộc loại IOrderedQueryable<Post> nhưng bạn chỉ định nó là IQueryable<Post>. Tôi thấy 2 cách để giải quyết vấn đề này, hoặc sửa đổi loại biến của bạn thành IQueryable<Post> hoặc sắp xếp truy vấn của bạn như sau:

posts = posts.Where(post => post.Body == searchString) 
    .OrderBy(post => post.Date); 
Các vấn đề liên quan