Как написать асинхронное задание < IEnumerable < Employee > > Тип возврата

Попробуйте выполнить код ниже: var внутри функции

var globalVariable = "This is a global variable"

function fun() {

  var localVariable = "NOW this is a local Variable";

  console.log(localVariable); //now this is a local variable

}
fun(); 

console.log(globalVariable); //This is a global variable(Output)

-1
задан JOHN Mickh 19 January 2019 в 17:51
поделиться

4 ответа

Этот ответ отредактирован

Ваш метод настроен на возврат одного Country, но ваш код возвращает IEnumerable<Country>.

Но проблема, похоже, решается по-разному в зависимости от версии .Net. Если вы используете .Net Core 2.2 (или позже в будущем), это должно работать:

public async Task<ActionResult<IEnumerable<Country>>> GetCountryRes()
{
    var x = await ObjRepo.GetCountries();    
    return x;
}
0
ответ дан einord 19 January 2019 в 17:51
поделиться
            public Task<IEnumerable<Country>> GetCountries()
            {
                var x=  from n in _ConnectToDb.Country
                        orderby n.CountryId
                        select n;
                return Task.FromResult(x.ToList());
            }

Это было бы решением в вашем случае. Проблема в вашем коде заключается в том, что вы должны выполнить повторную настройку Task или запустить ожидаемый метод в GetCountries(). Само ключевое слово Async ничего не значит, оно не будет запускать метод асинхронно, оно просто позволит вам использовать await. Так что это избыточно в вашем случае

0
ответ дан OlegI 19 January 2019 в 17:51
поделиться

Синтаксический сахар async в вашем первом методе не нужен и проблематичен, так как вы ничего не ожидаете. Вам просто нужно вернуть Task из вашего результата. Но поскольку вы используете оператор LINQ (то же самое верно для любого метода LINQ), запрос не обрабатывается до тех пор, пока не будет вызван (и также повторно обрабатывается для любых последующих вызовов), поэтому я рекомендую немедленно оценить его:

[ 110]
0
ответ дан Heath 19 January 2019 в 17:51
поделиться

Для GetCountries у меня есть две версии

public async Task<IEnumerable<Country>> GetCountries()
{
    var x = from n in _ConnectToDb.Country
            orderby n.CountryId
            select n;

    return await Task.FromResult(x.ToList());
}

// I prefer this version 
public Task<IEnumerable<Country>> GetCountries2()
{
    var x = from n in _ConnectToDb.Country
        orderby n.CountryId
        select n;

    return Task.FromResult(x.ToList().AsEnumerable());
}

Контроллер

// Here I change the return value to IEnumerable
public async Task<ActionResult<IEnumerable<Country>>> GetCountryRes()
{
    var x =await ObjRepo.GetCountries();    
    return x;
}
0
ответ дан Fredy Adriano Jimenez Martinez 19 January 2019 в 17:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: