Tôi cần xây dựng bộ lọc động và tôi muốn tiếp tục sử dụng các thực thể. Vì lý do này tôi muốn sử dụng PredicateBuilder từ albahari.C# Thực thể PredicateBuilder: Tham số 'f' không bị ràng buộc trong biểu thức truy vấn LINQ to Entities được chỉ định
Tôi tạo ra đoạn mã sau:
var invoerDatums = PredicateBuilder.True<OnderzoeksVragen>();
var inner = PredicateBuilder.False<OnderzoeksVragen>();
foreach (var filter in set.RapportInvoerFilter.ToList())
{
if(filter.IsDate)
{
var date = DateTime.Parse(filter.Waarde);
invoerDatums = invoerDatums.Or(o => o.Van >= date && o.Tot <= date);
}
else
{
string temp = filter.Waarde;
inner = inner.Or(o => o.OnderzoekType == temp);
}
}
invoerDatums = invoerDatums.And(inner);
var onderzoeksVragen = entities.OnderzoeksVragen
.AsExpandable()
.Where(invoerDatums)
.ToList();
Khi tôi chạy mã chỉ có 1 bộ lọc mà không phải là một bộ lọc ngày. Vì vậy, chỉ có vị từ bên trong được lấp đầy. Khi biến vị ngữ được thực hiện, tôi nhận được lỗi sau.
Tham số 'f' không bị ràng buộc trong LINQ to Entities định truy vấn biểu.
Trong khi tìm kiếm câu trả lời tôi đã tìm thấy page sau đây. Nhưng điều này đã được triển khai trong LINQKit.
Có ai khác gặp phải lỗi này và biết cách giải quyết không?
Tôi cũng phải xóa cuộc gọi đến AsExpandable() khỏi đối tượng IQueryable ban đầu của mình. –
Câu trả lời hay, nhưng gây hiểu lầm. Câu trả lời của BloodBaz là câu trả lời chính xác hơn đơn giản hơn – Mick