C# 返回类型错误的Blazor任务

C# 返回类型错误的Blazor任务,c#,task,return-type,blazor,C#,Task,Return Type,Blazor,我发现了错误 任务> __生成的\uuu索引。SearchFilmString'的返回类型错误 在我的代码下面,我不知道为什么。有问题的路线是 <BlazoredTypeahead SearchMethod="SearchFilms" 代码: 我通过将SearchFilms方法更改为下面的方法来修复它,很奇怪 private async Task<IEnumerable<Film>> SearchFilms(string searchText) {

我发现了错误

任务> __生成的\uuu索引。SearchFilmString'的返回类型错误

在我的代码下面,我不知道为什么。有问题的路线是

 <BlazoredTypeahead SearchMethod="SearchFilms"
代码:


我通过将SearchFilms方法更改为下面的方法来修复它,很奇怪

    private async Task<IEnumerable<Film>> SearchFilms(string searchText) 
{
    return await Task.FromResult(Films.Where(x => x.Title.ToLower().Contains(searchText.ToLower())).ToList());
}

我通过将SearchFilms方法更改为下面的方法来修复它,很奇怪

    private async Task<IEnumerable<Film>> SearchFilms(string searchText) 
{
    return await Task.FromResult(Films.Where(x => x.Title.ToLower().Contains(searchText.ToLower())).ToList());
}
介绍 在BlazoredTypeahead上,SearchMethod是异步的,因为此委托旨在调用后端以获取数据,并且我们无法阻止UI线程等待结果。通常:

private async  Task<IEnumerable<Film>> SearchFilms(string searchText)
{
    try
    {
       var result = await BackendService.SearchFilms(searchText);
       return result;
    } 
    catch ( ... )
    {
         UiShowError( ... )
         return empty_list;
    }
}
但它们还有其他更多的实现方法:您可以进行微优化,避免异步,并将结果转换为任务,请参阅

*1此外,您还可以避免在方法上方写入警告pragma warning disable CS1998,谢谢

简介 在BlazoredTypeahead上,SearchMethod是异步的,因为此委托旨在调用后端以获取数据,并且我们无法阻止UI线程等待结果。通常:

private async  Task<IEnumerable<Film>> SearchFilms(string searchText)
{
    try
    {
       var result = await BackendService.SearchFilms(searchText);
       return result;
    } 
    catch ( ... )
    {
         UiShowError( ... )
         return empty_list;
    }
}
但它们还有其他更多的实现方法:您可以进行微优化,避免异步,并将结果转换为任务,请参阅


*1此外,您还可以避免在方法上方写入pragma warning disable CS1998警告,这要感谢您在私有方法中没有使用异步方法。代码应为:

private Task<List<Film>> SearchFilms(string searchText)
{
    return Task.FromResult(Films.Where(x => x.Title.ToLower().Contains(searchText.ToLower())).ToList());
}

您没有在私有方法中使用异步方法。代码应为:

private Task<List<Film>> SearchFilms(string searchText)
{
    return Task.FromResult(Films.Where(x => x.Title.ToLower().Contains(searchText.ToLower())).ToList());
}

亚历克,它跑了,但你不知道路。我在亚历克身上解释过,它跑起来了,但你们不知道怎么走。我向丹尼解释过,你不应该等待任务;阅读:这看起来和问题中的代码完全一样,我看不到解释部分@Alec:这是用List而不是IEnumerable运行的吗?@Issac,确切地说,决不能进入异步方法。您可以删除elide的async&await关键字,请参阅@agua的anwser。@Henkholtman,OMG:您必须提供一个具有以下签名的方法Taskdani,您决不能等待任务。CompletedTask;阅读:这看起来和问题中的代码完全一样,我看不到解释部分@Alec:这是使用List而不是IEnumerable运行的吗?@Issac,确切地说,决不使用异步方法。您可以删除elide的async&Wait关键字,请参阅@agua的anwser。@HenkHolterman,OMG:您必须提供一个具有以下签名任务的方法