如何在C#Mongodb驱动程序中使用Lambda通过异步选择子列表

时间:2019-02-04 22:14:22

标签: c# mongodb mongodb-.net-driver

我正在编写一个大量使用嵌套对象列表的应用程序,而我正努力寻找一种方法来检索我满意的子列表。

我对异步编程还很陌生,想做类似以下的事情,但是我似乎想不出一种方法可以将它分成两个单独的调用。事实并非如此有效,仅获得所有子结果仅是将其过滤到我想要的结果。

*.myapp-production.herokuapp.com

我知道这行不通,但是我觉得它有些细微的变化,可以更改以使其起作用,但是我不知道从哪里开始。

baseObj 
{ 
    string ID; 
    string name; 
    List<subObj> subObjList
    {
        string ID; 
        string desc;
        bool deleted;
    }; 
}

这确实有效,但我认为可以更有效地完成

List<subObj> = await collection.AsQueryable().Where(w=> w.ID == "id").Select(s => s.subObjList.Where(w => w.deleted == false).ToList()).FirstAsync();

有没有一种方法可以只在一个查询中选择子列表,或者是不可能的。

1 个答案:

答案 0 :(得分:1)

是的,只需使用SelectMany而不是Select:

List<subObj> sObjList = collection.AsQueryable()
    .Where(w=> w.ID =="id")
    .SelectMany(x => x.subObjList)
    .Where(w => w.deleted == false)
    .ToList();