使用LINQ“ Include”过滤嵌套的集合

时间:2018-08-28 11:33:02

标签: c# linq entity-framework-6

我在网上进行了很长一段时间的搜索,但实际上并没有直接的答案。我将如何使用Include来使用Where来过滤嵌套的集合?例如,假设我要包含所有未禁用的CartItems

var myCart = _dbContext.Carts
                 .Include(cart => cart.CartShippingBoxes
                     .Select(cartShippingBox => cartShippingBox.CartItems
                         .Where(cartItem => !cartItem.IsDisabled))); // This doesn't work

1 个答案:

答案 0 :(得分:1)

尝试一下:

var carts = _dbContext.CartShippingBoxes
                 .Include(item => item.Cart)
                 // .ThenInclude(cart => cart.A)
                         .Where(cartItem => !cartItem.IsDisabled))
                  Select(s=> s.Cart).ToList();

或者使用Include的重载,该重载采用类型为string的参数,例如:

.Include("Cart").Include("Cart.CollectionA").Include("Cart.CollectionB")
.Include("Cart.CollectionZ")