我正在编写一个大量使用嵌套对象列表的应用程序,而我正努力寻找一种方法来检索我满意的子列表。
我对异步编程还很陌生,想做类似以下的事情,但是我似乎想不出一种方法可以将它分成两个单独的调用。事实并非如此有效,仅获得所有子结果仅是将其过滤到我想要的结果。
*.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();
有没有一种方法可以只在一个查询中选择子列表,或者是不可能的。
答案 0 :(得分:1)
是的,只需使用SelectMany而不是Select:
List<subObj> sObjList = collection.AsQueryable()
.Where(w=> w.ID =="id")
.SelectMany(x => x.subObjList)
.Where(w => w.deleted == false)
.ToList();