我有以下数据模型:
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检查过的数据库似乎没问题。
答案 0 :(得分:0)
你可以得到这样的客户:
using System.Linq;
collectionCarts.SelectMany(c => c.OrderList.Select(o => o.Customer));
答案 1 :(得分:0)
您是要尝试仅检查列表中的第一项还是列表中的任何项目? 因为在您的查询中,您只是明确查询第一个。
如果不是(我假设),尝试这样的事情:
var result = collectionCarts.Include("OrderList.Customer").
Find(x => x.Select(v => v.OrderList).Select(v =>v.Customer).
Select(v => v.CustomerId).ToList().Contains(2));