簡體   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