繁体   English   中英

如何等待带有多个from子句的LINQ查询?

[英]How to await LINQ query with multiple from clauses?

我有以下使用多个from子句的LINQ查询:

var count = (
    from uTask in db.Table<UTask>().Where(u => u.ParentId == componentId && u.RouteId == routeId)
    from workItem in db.Table<WorkItem>().Where(w => w.ParentId == uTask.Id)
    from visualInspectionQuestion in db.Table<VisualInspectionQuestion>().Where(v => v.ParentId == workItem.Id && v.Answer != null)
    select new { }).Count();

我该如何调整它,以便等待每个from子句? 我知道有很多关于如何在LINQ中使用await的示例,但是我找不到如何处理多个from子句的示例。 我正在使用带有异步扩展的SQLite-net。

编辑1:按照Evk的建议,我尝试了以下操作:

count = await (
    from uTask in db.Table<UTask>().Where(u => u.ParentId == componentId && u.RouteId == routeId)
    from workItem in db.Table<WorkItem>().Where(w => w.ParentId == uTask.Id)
    from visualInspectionQuestion in db.Table<VisualInspectionQuestion>().Where(v => v.ParentId == workItem.Id && v.Answer != null)
    select new { }).CountAsync();

但是,这会产生以下编译器错误:

找不到源类型“ AsyncTableQuery”的查询模式的实现。 找不到“ SelectMany”。

尝试使用Task.WhenAll() 在计数之前,这将等待您的所有任务完成:

var tasks = foos.Select(DoSomethingAsync).ToList();
var count = await Task.WhenAll(tasks).CountAsync();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM