簡體   English   中英

從列表內的列表中獲取所有元素

[英]Get all elements from Lists inside a List

我有以下數據模型:

    public class Customer
    {
        [BsonId]
        public int CustomerId { get; set; }
        public string Name { get; set; }
    }

    public class Order
    {
        [BsonId]
        public int OrderId { get; set; }
        [BsonRef("customers")] 
        public Customer Customer { get; set; }
    }

    public class Cart
    {
        [BsonId]
        public int CartID { get; set; }
        public List<Order> OrderList { get; set; }
    }

現在,我想通過我的購物車集合上的查詢來訪問客戶。 我嘗試過這樣的事情:

var collectionCarts = db.GetCollection<Cart>("carts");
var result = collectionCarts.Include("OrderList.Customer").Find(x => x.OrderList[0].Customer.CustomerId == 2);

但是,所有嘗試都會導致一個空的客戶對象。 我用LiteDB-Viewer檢查過的數據庫似乎正常。

您可以這樣獲得客戶:

using System.Linq;

collectionCarts.SelectMany(c => c.OrderList.Select(o => o.Customer));

您是在嘗試僅檢查列表中的第一項還是列表中的任何項? 因為在您的查詢中,您明確地僅查詢第一個查詢。

如果沒有(我假設),請嘗試如下操作:

var result = collectionCarts.Include("OrderList.Customer").
                    Find(x => x.Select(v => v.OrderList).Select(v =>v.Customer).
                                     Select(v => v.CustomerId).ToList().Contains(2));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM