我对MongoDB数据库上的C#中的LINQ联接有问题。这是我要填写的课程:
public class CompanyProduct
{
public string _id { get; set; }
public string paymentId { get; set; }
public string productId { get; set; }
public string date { get; set; }
public string name { get; set; }
}
此模型中的日期来自另一个类:
public class Payment
{
public string _id { get; set; }
public string date { get; set; }
}
以及其他名称和图标:
public class Product
{
public string _id { get; set; }
public string name { get; set; }
}
要用所有必要的信息填充CompanyProduct
,我可以在所有适用的存储库上进行三个不同的查询,但是为了简化此过程,我试图将它们集成到1个查询中。目前,我在此:
public List<CompanyProduct> List(string id)
{
var productCollection = db.GetCollection<Product>("products");
var paymentCollection = db.GetCollection<Payment>("payments");
var query = from c in this.collection.AsQueryable().Where(x => x._id == id)
join pr in productCollection.AsQueryable() on c.productId equals pr._id into pr
join pa in paymentCollection.AsQueryable() on c.paymentId equals pa._id into pa
select new CompanyProduct()
{
_id = c._id,
date = pa.First().date,
name = pr.First().name,
};
return query.ToList()
}
MongoDB中的一些文档示例:
CompanyProduct:
付款:
产品:
但是,在这种构造中,pa.First()
和pr.First()
总是返回null
...我什至尝试摆脱into pr
并将pr.First().name
更改为{ {1}},但这没什么不同。
我在这里做错了什么?我需要实施哪些改进?