gpt4 book ai didi

c# - IQueryable 不包含 GetAwaiter 的定义

转载 作者:行者123 更新时间:2023-11-30 13:14:36 27 4
gpt4 key购买 nike

我在 Entity Framework 中使用 WebAPI 来创建新端点,但我遇到了一些问题。我正在尝试使用 Linq Where 语句来获取我的数据,但我收到以下错误。

'IQueryable' does not contain a definition for 'GetAwaiter' and no extension method 'GetAwaiter' accepting a first argument of type 'IQueryable' could be found (are you missing a using directive or an assembly reference?)

这是我的代码。

    [ResponseType(typeof(Vocab))]
public async Task<IHttpActionResult> GetVocabByLesson(int lessonId)
{
Vocab vocab = await db.Vocabs.Where(a => a.LessonId == lessonId);
if (vocab == null)
return NotFound();

return Ok(vocab);
}

最佳答案

使用FirstOrDefaultAsync扩展方法:

[ResponseType(typeof(Vocab))]
public async Task<IHttpActionResult> GetVocabByLesson(int lessonId)
{
Vocab vocab = await db.Vocabs.FirstOrDefaultAsync(a => a.LessonId == lessonId);
if (vocab == null)
return NotFound();

return Ok(vocab);
}

根据您的代码,我可以推断出您只想返回一个元素,这就是我建议使用 FirstOrDefaultAsync 的原因。但是,如果您想获得多个满足某些条件的元素,请使用 ToListAsync :

[ResponseType(typeof(Vocab))]
public async Task<IHttpActionResult> GetVocabByLesson(int lessonId)
{
var result= await db.Vocabs.Where(a => a.LessonId == lessonId).ToListAsync();
if (!result.Any())
return NotFound();

return Ok(result);
}

关于c# - IQueryable 不包含 GetAwaiter 的定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40978098/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com