2012-05-09 33 views
6

Điều này phải đơn giản nhưng tôi bị vấp trên đường bên trong khối IF. Các lỗi trên dòng đó làLàm cách nào để chuyển đổi IQueryable <Patient> này thành DbSet <Patient>?

"Không thể chuyển đổi ngầm gõ 'System.Linq.IQueryable [Bệnh nhân]' để 'System.Data.Entity.DbSet [Bệnh nhân]'. Một chuyển đổi rõ ràng tồn tại (là bạn thiếu một dàn diễn viên?)"

tôi đã cố gắng phụ thêm nhiều phần mở rộng (AsQueryable(), ToList(), AsEnumerable(), vv) sau khi .Contains() vô ích.

Tôi thiếu gì ở đây? Dự án này là xây dựng bằng cách sử dụng MVC 4 Beta và EF4

public ActionResult SearchIndex(string searchString) 
{ 
    var patients = this.db.Patients; 

    if (!String.IsNullOrEmpty(searchString)) 
    { 
     patients = patients.Where(p => p.LastName.Contains(searchString)); 
    } 

    return View(patients.ToList()); 

} 

Trả lời

12

Khai báo bệnh nhân một cách rõ ràng như IQueryable<Patient>

IQueryable<Patient> patients = this.db.Patients; 

Hoặc gọi AsQueryable trên đó:

var patients = this.db.Patients.AsQueryable(); 
5

Bạn chỉ có thể thay đổi loại patients để làm cho công việc này:

IQueryable<Patient> patients = this.db.Patients; 
Các vấn đề liên quan