2011-10-16 45 views
5

Tôi đã tìm kiếm nhiều bài đăng trên ngăn xếp tràn để nhận được câu trả lời nhưng tôi chưa rõ. Tôi chỉ đang tìm kiếm một số cách đơn giản để xây dựng các truy vấn động. Tôi đã có thể làm các truy vấn đơn giản liên quan đến biểu thức duy nhất trong mệnh đề where nhưng tôi không thể tìm thấy bất kỳ cách nào dễ dàng để xử lý nhiều biểu thức. Tôi có kinh nghiệm làm việc với API tiêu chuẩn NHibernate rất tiện dụng cho các công trình truy vấn an toàn và nhanh chóng trong thời gian biên dịch. Tôi mặc dù một cái gì đó tương tự sẽ có sẵn trên EntityFramework nhưng cho đến nay không có may mắn. Có cách nào dễ dàng ngoài việc xây dựng các truy vấn chuỗi theo cách thủ công không? Có một cái nhìn tại mã sau đây tôi nghĩ rằng nó sẽ làm việc nhưng nó không. Trên thực tế nó không xây dựng truy vấn trên nhiều biểu thức lambda. Tôi đã mong rằng mỗi cuộc gọi sẽ thêm một biểu thức AND vào mệnh đề where. Tui bỏ lỡ điều gì vậy ?Khung đối tượng truy vấn SQL động

var query = Entities.Current.Jobs.AsQueryable<Job>(); 

      if (!string.IsNullOrEmpty(keywords)) 
      { 
       query.Where(j => j.Title.Contains(keywords) || j.Description.Contains(keywords)); 
      } 

      if (industryId > 0) 
      { 
       query.Where(j => j.IndustryId == industryId); 
      } 

      if (countyId > 0) 
      { 
       query.Where(j => j.CountyId == countyId); 
      } 

      return query.ToList<Job>(); 

Trả lời

6

IQueryable là không thay đổi; bạn không thể (trực tiếp) sửa đổi truy vấn của một hiện tại IQueryable. query.Where trả về IQueryable mới với mệnh đề bổ sung ở đâu.

Bạn hiện không làm bất kỳ điều gì với các mới IQueryable s này.

Bạn cần phải viết

query = query.Where(...) 
+0

đánh bại tôi trong vòng 1 phần nghìn giây – Icarus

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