2012-04-17 27 views

Trả lời

10

Từ How to use “contains” or “like” in a dynamic linq query?

//edit: this is probably broken, see below 
ids = new int[] {1,2,3,4}; 
dataContext.Table.Where("id.Contains(@0)", ids); 

Bên cạnh: Đó là thực tế tốt để sử dụng placeholders trong các biểu thức LINQ năng động. Nếu không, bạn có thể mở lòng mình để tấn công tiêm LINQ (Is Injection Possible through Dynamic LINQ?)


EDIT:

thực sự tôi nghĩ mình sai lầm này lên. Rất tiếc, tôi không thể kiểm tra điều này vào lúc này. Nhưng tôi nghĩ rằng cú pháp chính xác trong trường hợp này phải là dataContext.Table.Where("@0.Contains(id)",ids);, không phải là cách khác xung quanh, và phiên bản đó không không hoạt động ngoài hộp.

Xem here để biết cách thêm chức năng này vào liên kết động. Bạn cần phải sửa đổi thư viện cho việc này.

5
var ids = new int[] {1,2,3,4}; 
dataContext.Table.Where(f => ids.Contains(f.id)) 
+1

Cảm ơn, tôi biết điều này, nhưng tên cột "id" đang thay đổi. Tôi nhận được cột này một cách dè dặt. Vì vậy, tôi không thể sử dụng LINQ tĩnh. Tôi phải sử dụng thư viện LINQ động cho chuỗi nơi mà clausule là ví dụ. [Dynamic Linq] (http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx) –

+1

@Ingenu , đọc tài nguyên và bạn sẽ tìm hiểu Dynamic Linq là gì –

2

có vẻ như trong phiên bản 1.0.4 của System.Linq.Dynamic, chúng ta có thể sử dụng cú pháp sau dataContext.Table.Where("@0.Contains(outerIt.id)",ids); vì nó đã được thực hiện và trình bày trong blog đã trích dẫn: here

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