通过Linq左连接使用来自多个MongoDB集合的信息填充类

时间:2018-09-28 13:32:15

标签: c# mongodb linq

我对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:

CompanyProduct in database

付款:

Payment in database

产品:

Product in database

但是,在这种构造中,pa.First()pr.First()总是返回null ...我什至尝试摆脱into pr并将pr.First().name更改为{ {1}},但这没什么不同。

我在这里做错了什么?我需要实施哪些改进?

0 个答案:

没有答案