简体   繁体   English

IEnumerable <Entity> &#39;不包含异步任务方法的&#39;GetAwaiter&#39;定义

[英]IEnumerable<Entity>' does not contain a definition for 'GetAwaiter' for Async Task Method

I'm trying to pick 1 record from a table but the error i keep getting is 我正在尝试从表中选择1条记录,但我不断收到的错误是

'IEnumerable' does not contain a definition for 'GetAwaiter' and no extension method 'GetAwaiter' accepting a first argument of type 'IEnumerable' could be found (are you missing a using directive or an assembly reference?) “ IEnumerable”不包含“ GetAwaiter”的定义,并且找不到找到接受类型为“ IEnumerable”的第一个参数的扩展方法“ GetAwaiter”(是否缺少using指令或程序集引用?)

public class IntermediaryAssignment
    {   
       public string Company{get;set:}
       public string RegistrationNumber{get;set:}
       public bool Dispatched{get;set:}
    }

public async Task<IntermediaryAssignment> PickOneSticker(string company, 
                  string registrationNumber)
    {
        var db = new DatabaseContext();
        var results = await (from s in db.IntermediaryAssignment
                             where s.Dispatched == false && s.CompanyCode == 
                             company && s.RegistrationNumber ==
                              registrationNumber orderby s.StickerCode 
                             ascending select s).ToList().Take(1);
        return results.FirstOrDefault();
    }
var results = await (from s in db.IntermediaryAssignment
                         where s.Dispatched == false && s.CompanyCode == 
                         company && s.RegistrationNumber ==
                          registrationNumber orderby s.StickerCode 
                         ascending select s).FirstOrDefaultAsync();
    return results;

If your intention to take first item based on the order its best to use FirstOrDefault without ToList() & Take(1) 如果您打算根据订单购买第一件商品,则最好使用不带ToList()Take(1) FirstOrDefault

FirstOrDefault materialize the query and bring the first item from database. FirstOrDefault实现查询,并从数据库中获取第一项。

ToList() if you need to get items based on your filter use to list. ToList()如果您需要基于用于列表的过滤器获取项目。

In your current query .ToList().Take(1); 在当前查询中.ToList().Take(1); The ToList() bring all data to memory and takes the first one, instead of this you can directly fetch first item from db using FirstOrDefault ToList()将所有数据存储到内存中并获取第一个数据,您可以使用FirstOrDefault从数据库直接获取第一个数据,而不是其他数据

var db = new DatabaseContext();
    var results = await (from s in db.IntermediaryAssignment
                         where s.Dispatched == false && s.CompanyCode == 
                         company && s.RegistrationNumber ==
                          registrationNumber orderby s.StickerCode 
                         ascending select s).ToListAsync());

    return results.FirstOrDefault();

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

相关问题 Task<> 不包含“GetAwaiter”的定义 - Task<> does not contain a definition for 'GetAwaiter' async/await &quot;List&lt;&gt; 不包含 &#39;GetAwaiter&#39; 的定义&quot; - async/await "List<> does not contain a definition for 'GetAwaiter'" HttpResponseMessage' 不包含 'GetAwaiter' 的定义,并且没有可访问的扩展方法 'GetAwaiter' - HttpResponseMessage' does not contain a definition for 'GetAwaiter' and no accessible extension method 'GetAwaiter' 不包含&#39;GetAwaiter&#39;的定义 - does not contain a definition for 'GetAwaiter' C# 不包含“GetAwaiter”的定义,并且最佳扩展方法重载需要“Task”类型的接收器 - C# does not contain a definition for 'GetAwaiter' and the best extension method overload requires a receiver of type 'Task' Task&lt;&gt; 不包含 Net Framework 4.0 中“GetAwaiter”的定义 - Task<> does not contain a definition for 'GetAwaiter' in Net Framework 4.0 缓存任务结果 - AsyncLazy 不包含 GetAwaiter 的定义 - Caching task results - AsyncLazy does not contain a definition for GetAwaiter “bool”不包含“GetAwaiter”的定义 - 'bool' does not contain a definition for 'GetAwaiter' &#39;ArrayList&#39;不包含&#39;GetAwaiter&#39;的定义 - 'ArrayList' does not contain a definition for 'GetAwaiter' IQueryable不包含GetAwaiter的定义 - IQueryable does not contain definition for GetAwaiter
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM