c# - 通过 Linq 左连接使用来自多个 MongoDB 集合的信息填充类
问题描述
我对 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 的一些文档示例:
公司产品:
支付:
产品:
然而,在这个结构中pa.First()
总是pr.First()
返回null
......我什至尝试摆脱into pr
和改变pr.First().name
,pr.name
但这并没有什么不同。
我在这里做错了什么?我需要实施哪些改进?