繁体   English   中英

迭代任务列表C#

[英]Iterate through Task List C#

我有这样的代码

public async Task<List<User>> GetUsersByField(string fieldName, string fieldValue)
    {
        var filter = Builders<User>.Filter.Eq(fieldName, fieldValue);
        var result = await _usersCollection.Find(filter).ToListAsync();

        return result.ToList();
    }

当我尝试使用迭代它时

foreach(var w in GetUsersByField("Name", John"))

它显示错误

“不包含'GetEnumerator'的公共定义”

我试过用

public async IEnumerable<Task<List<User>>> GetUsersByField(string fieldName, string fieldValue)

但仍显示错误。 有什么建议?

使用这样的async方法

public async Task<List<User>> GetUsersByField(string fieldName, string fieldValue

建议await

public async Task MyCallingMethod()
{
    var users = await GetUsersByField(...);

    foreach(var w in users ) 
    {
       ...
    }
}

要么

public async Task MyCallingMethod()
{
    foreach(var user in await GetUsersByField(...)) 
    { 
       ... 
    }
}

通过调用Result还有其他方法,但不要让那个兔子洞掉下来

简而言之,让Async Await Pattern通过代码像病毒一样传播


补充阅读

Stephen Cleary: Async和Await

暂无
暂无

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

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