Tôi có thể sử dụng nếu mệnh đề với LINQ ở đâu không?Nếu điều kiện trong LINQ Where khoản
Trả lời
Có bạn có thể thích:
var query = someList.Where(a => a == "something");
if (condition)
{
query = query.Where(b => b == "something else");
}
var result = query.ToList();
Vì Where
được sản xuất một IQueryable
, việc thực hiện được hoãn lại cho đến khi ToList
trong ví dụ của tôi để bạn có thể chuỗi Where
s với nhau như nhiều như bạn muốn và sau đó chỉ cần thực hiện nó sau khi bạn đã vượt qua tất cả các điều kiện của bạn.
Make sử dụng WhereIf
extenstion phương pháp avaialbe trong LINQ
Ví dụ
if (SearchControlMain.PostingID.HasValue)
query = query.Where(q => q.PostingID == SearchControlMain.PostingID);
thay vì ở trên đi cho dưới đây
query = query.WhereIf(SearchControlMain.CategoryID.HasValue, q => q.CategoryID == SearchControlMain.CategoryID);
Một trong các liên kết đã chết và không có điều gì như 'WhereIf' trong EF của tôi. – A1rPun
Tôi không chắc chắn những gì câu hỏi là, nhưng một câu trả lời có thể là:
Vâng,
list.Where(item => { if (Foo(item)) return true; else return false; });
Nó sẽ là một cách phức tạp để nói một cái gì đó đơn giản, mặc dù.
bạn có thể thử điều này như thế nào? –
Có, ít nhất nó hoạt động với LINQ-to-đối tượng. –
Bằng với: list.Where (item => Foo (mục)); –
Không chắc nếu điều này là phù hợp nhưng nó là khá hữu ích, bạn có thể sử dụng IFS khá thuận lợi vẻ vang với điều kiện nơi mệnh đề:
var r = (from p in productinfo.tblproduct
where p.Accountid == accountid
select p);
if (uuf1 != null)
r = r.Where(p => p.UnitUserField1 == uuf1);
if (uuf2!= null)
r = r.Where(p => p.UnitUserField2 == uuf2);
Vì vậy mệnh đề where sẽ được sửa đổi theo những gì có trong UUF1 hoặc UUF2 tức bạn có thể chỉ có UUF1 với thông tin, trong trường hợp nó sẽ lấy điều đó và bỏ qua mệnh đề UUF2 where, bạn có thể có cả hai trong đó nó sẽ lấy cả hai hoặc bạn có thể không có bất kỳ thứ gì trong UUF1 hoặc 2 và mệnh đề where của bạn sẽ lấy accountid như mệnh đề where.
Tôi đã có một kịch bản như thế này, nơi tôi đã phải kiểm tra null trong danh sách chính nó. Đây là những gì tôi đã làm.
items = from p in items
where p.property1 != null //Add other if conditions
select p;
// Use items the way you would use inside the if condition
Nhưng khi Kelsey đã chỉ ra điều này sẽ làm việc quá -
items = items.Where(a => a.property1 != null);
var query = someList.Where(a => (someCondition)? a == "something" : true);
như vậy, nếu 'someCondition' là sai, 'ở đâu' sẽ bị bỏ qua.
Điều này thực sự phải là câu trả lời được chấp nhận –
Trong trường hợp của tôi có hai "có điều kiện", nơi phụ thuộc vào phím tìm kiếm, vì vậy tôi đã làm:
var query = db.Package.Include("SomeThing")
.Where(item => searchString1 == null || searchString1 == "" || item.Contains(searchString1))
.Where(item => searchString2 == null || searchString2 == "" || item.Contains(searchString2));
...
- 1. LINQ - nếu điều kiện
- 2. LINQ - nested where khoản
- 3. Điều khoản WHERE có điều kiện trong SQL Server
- 4. LINQ WHERE khoản sử dụng nếu các câu lệnh
- 5. LINQ trong đó khoản có nhiều điều kiện
- 6. Điều khoản WHERE với nhiều điều kiện lồng nhau
- 7. LINQ Tham gia với nhiều điều kiện trong điều khoản
- 8. Nếu các câu lệnh trong một điều khoản của LINQ, nơi khoản
- 9. Điều kiện Các điều khoản trong JasperReports
- 10. LINQ to SQL nhiều điều kiện nơi khoản
- 11. Điều khoản WHERE có điều kiện với tuyên bố CASE trong Oracle
- 12. Điều khoản động trong LINQ đối với các thực thể
- 13. khoản Nhiều WHERE với phương pháp khuyến nông LINQ
- 14. RavenDB - Tùy chọn where khoản
- 15. Điều kiện bên trong JOIN hoặc WHERE
- 16. Sử dụng điều kiện trong LINQ Programatically
- 17. NẾU Điều kiện trong truy vấn SQL
- 18. Điều khoản và điều kiện Django mẫu
- 19. Nếu tuyên bố trong Điều khoản ở đâu
- 20. Sự khác nhau giữa nhiều điều khoản và điều hành && trong LINQ-to-SQL là gì?
- 21. SQL JOIN nơi đặt điều kiện WHERE?
- 22. LINQ nhiều nơi khoản
- 23. Truy vấn LINQ với mệnh đề WHERE với nhiều điều kiện
- 24. Thực thi mệnh đề WHERE có điều kiện trong SQL
- 25. "Điều kiện có điều kiện" trong mệnh đề WHERE (Điều kiện áp dụng nào phụ thuộc vào cờ "chế độ")
- 26. $ .ajax nếu điều kiện
- 27. Bụi nếu điều kiện
- 28. LINQ và tổng có điều kiện
- 29. LINQ Tham gia ở đâu Khoản
- 30. MySQL Chọn Statement, WHERE 'TRÊN' khoản
+1 câu trả lời xuất sắc nhất trong số ba. –
Ở đâu không sản xuất IQueryable, nó đang tạo ra IEnumerable. Câu trả lời sai –
@OmerK Sản phẩm trong thực tế IQueryable, nếu đối tượng bạn đang chạy phương pháp mở rộng cũng là một IQueryable, nếu bạn chạy nó trên một IEnumerable, bạn sẽ nhận được một IEnumerable. –