Đây là vấn đề: Tôi cần trả về bộ sưu tập các đối tượng có bộ sưu tập lồng nhau được lọc. Ví dụ: có một cửa hàng có đơn hàng và tôi cần trả lại bộ sưu tập với các cửa hàng bao gồm các bộ sưu tập lồng nhau có đơn hàng nhưng không có đơn đặt hàng của khách hàng được đánh dấu là đã xóa.Làm cách nào để lọc bộ sưu tập lồng ghép đối tượng Khung thực thể?
Đây là những gì tôi cố gắng làm. Nhưng vẫn không có may mắn. Mọi đề xuất đều được đề xuất :)
public List<StoreEntity> GetStores(Func<Store, bool> storeFilter, Predicate<OrderEntity> orderFileter)
{
IQueryable<StoreEntity> storeEntities = Context.Stores
.Include(o => o.Order)
.Include(cu => cu.Orders.Select(c => c.Customer))
.Where(storeFilter)
//.Where(rcu=>rcu.Orders.Select(cu=>cu.Customer.Deleted==false)) //just test this doesn't work
.AsQueryable();
List<StoreEntity> storeEntities = storeEntities.ToList();
//storeEntities.ForEach(s => s.Orders.ToList().RemoveAll(c=>c.Customer.Deleted==true)); // doesn't work
foreach (StoreEntity storeEntity in storeEntities)
{
storeEntity.Orders.ToList().RemoveAll(r=>r.Customer.Deleted==true);
}
return storeEntities;
}
Vấn đề là bộ lọc không được áp dụng. Khách hàng đã xóa cờ được đặt là thời gian lưu trú thực sự trong bộ sưu tập.
Và vấn đề là gì? Nó không biên dịch sao? Nó có ném một ngoại lệ thời gian chạy không?Liệu nó có chạy nhưng trả lại dữ liệu sai? –
giải thích thêm một chút. cám ơn. –
Tôi đã sử dụng gói nuget này: 'Z.EntityFramework.Plus.QueryIncludeFilter.EF6' Tài liệu ở đây: https://github.com/zzzprojects/EntityFramework-Plus/wiki/EF-Query-IncludeFilter-%7C-Entity- Framework-Include-Related-Entities-using-Where-Filter –