Не удается получить данные запроса linq в asyn c ActionResult с помощью await и задачи. Ошибка: невозможно использовать await с методом asyn c - PullRequest
0 голосов
/ 18 февраля 2020

Как получить данные запроса LINQ в типе возврата Task<IHttpActionResult>? Я сохранил данные в переменной var ponddata. Как вернуть данные в методе действия Task<IHttpActionResult>? Я получаю эту ошибку в return Ok заявлении:

Ошибка CS1061 «IQueryable <>» не содержит определения для «GetAwaiter» и нет доступного метода расширения «GetAwaiter», принимающего первый аргумент может быть найден тип 'IQueryable <>' (вам не хватает директивы using или ссылки на сборку?)

Код:

public async Task<IHttpActionResult> GetAllData(string user)
{
    using (smartpondEntities entities = new smartpondEntities())
    {
        try
        {
            var ponddata = from pond in entities.ponds
                join customerdevice in entities.CustomerDevices on pond.imei equals customerdevice.imei
                join userdata in entities.Users on customerdevice.CustomerId equals userdata.CustomerId
                where userdata.Username == "user1"
                select new { temperature = pond.temp, Imei = pond.imei, timestamp = pond.timestatmp };
            return Ok(await ponddata);
        }
        catch (Exception Ex)
        {
            return BadRequest("Sorry Error Found!!!");
        }
    }
}

1 Ответ

2 голосов
/ 18 февраля 2020

Компилятор возвращает Task для вас, когда вы используете asyn c и шаблон ожидания , (или, точнее), когда вы украшаете свой метод с помощью ключевого слова async

public async Task<IHttpActionResult> GetAllData(string user)

Чтобы воспользоваться преимуществом шаблона, вы обычно await что-то в этих методах.

...