IEnumerable <entity>'不包含异步任务方法的'GetAwaiter'定义

时间:2018-08-26 12:48:24

标签: c# entity-framework-6

我正在尝试从表中选择1条记录,但我一直收到的错误是

  

'IEnumerable'不包含定义   对于“ GetAwaiter”,没有扩展方法“ GetAwaiter”接受   类型为“ IEnumerable”的第一个参数可以是   找到(您是否缺少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();
    }

2 个答案:

答案 0 :(得分:1)

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;

如果您打算根据订单取第一件物品,则最好使用FirstOrDefault而不使用ToList()Take(1)

  

FirstOrDefault实现查询,并从数据库中获取第一项。

     

ToList(),如果您需要根据过滤器的使用来列出项目。

在当前查询.ToList().Take(1);ToList()将所有数据存储到内存中并获取第一个数据,您可以使用FirstOrDefault

直接从数据库中获取第一项。

答案 1 :(得分:1)

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();