我有以下使用多个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的例子,但是我找不到如何处理多个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();
但是,这会产生以下编译器错误:
无法找到源类型&#39; AsyncTableQuery&#39;的查询模式的实现。 &#39;的SelectMany&#39;没找到。
答案 0 :(得分:0)
尝试使用 Task.WhenAll()。在计算之前,这将等待所有任务完成:
var tasks = foos.Select(DoSomethingAsync).ToList();
var count = await Task.WhenAll(tasks).CountAsync();