我有两个类ShoppingCartCartItems像这样:

public class ShoppingCart
{
    public Guid Id { get; set; }
    public DateTime CreatedOn { get; set; }
    public Guid OwnerId { get; set; }
    public ICollection<CartItem> Items { get; set; }
}

 public class CartItem
 {
        public Guid Id { get; set; }}
        public int Quantity { get; set; }
        public Guid ProductId { get; set; }
        public Guid ShoppingCartId { get; set; }
}


我想使用以下方法通过CartItems获取所有ownerId

public IEnumerable<CartItem> GetCartItems(Guid ownerId)
{
    return _shoppingCarts.Where(row => row.OwnerId == ownerId)
                         .Select(row => row.Items)
                         .ToList() ;
}


但它返回一个错误:

Cannot implicitly convert type System.Collections.Generic.List<System.Collections.Generic.ICollection<CartItem>>'to System.Collections.Generic.IEnumerable<CartItem>

最佳答案

您方法的当前返回值是IEnumerable<List<CartItem>>类型。

您应该使用Select代替SelectMany,如下所示:

public IEnumerable<CartItem> GetCartItems(Guid ownerId)
{
    return _shoppingCarts.Where(row => row.OwnerId == ownerId).SelectMany(row => row.Items).ToList() ;
}


SelectManyCartItem的集合平整为CartItem的一个集合。

关于c# - 如何在 Entity Framework 中返回嵌套列表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36303772/

10-09 09:22