Tôi muốn viết truy vấn RavenDB lọc theo giá trị nếu nó có sẵn, nhưng nếu giá trị đó không có sẵn, tôi muốn nó trả về tất cả các đối tượng. Ví dụ, trong LINQ to đối tượng, tôi có thể làm một cái gì đó như thế này:RavenDB - Tùy chọn where khoản
var matches = people.Where(x => x.LastName == userEntry || userEntry == string.Empty).ToList();
Nhưng sau đây sẽ không hoạt động:
var matches = RavenSession.Query<Person>().Where(x => x.LastName == userEntry || userEntry == string.Empty).ToList();
Vì userEntry
không phải là một giá trị được lập chỉ mục, điều này ném một ngoại lệ.
Tôi làm cách nào để thực hiện việc này?
tệ nhất kịch bản trường hợp, chỉ cần làm một câu lệnh if để kiểm tra 'userEntry == string.Empty' và truy vấn phù hợp! Tiền thưởng, nó dễ hiểu hơn !! – banging
Tôi nghĩ tôi hiểu ý bạn là gì, nhưng tôi đã đơn giản hóa câu hỏi cho sự rõ ràng. Kịch bản thực tế của tôi phức tạp hơn, nơi tôi có ~ 10 trường có tất cả tùy chọn để lọc và bất kỳ trường hợp nào người dùng điền vào, tôi muốn đưa các trường đó vào truy vấn. Nhưng nếu người dùng để trống, chúng sẽ bị bỏ đi. Vì vậy, sẽ không thực tế nếu viết các câu lệnh với các truy vấn khác nhau cho mọi kết hợp bộ lọc có thể có. –