C# C中异步方法的返回类型#

C# C中异步方法的返回类型#,c#,entity-framework,asp.net-mvc-5,C#,Entity Framework,Asp.net Mvc 5,我正在编写一个方法来删除员工贷款计划。这意味着我必须删除结果集,它是一个列表。我读到List.Clear()可以删除列表。我有一个来自接口的自定义方法存储库,它是异步的,返回IEnumerable。我遇到的问题是删除列表后异步方法的返回类型 无法从用法推断方法“Task.FromResult(TResult)”的类型参数。尝试显式指定类型参数 公共任务DeleteEmployeeSchedule(字符串employeeId,字符串LoantySpecode) { var scheduleList

我正在编写一个方法来删除员工贷款计划。这意味着我必须删除结果集,它是一个列表。我读到List.Clear()可以删除列表。我有一个来自接口的自定义方法存储库,它是异步的,返回IEnumerable。我遇到的问题是删除列表后异步方法的返回类型

无法从用法推断方法“Task.FromResult(TResult)”的类型参数。尝试显式指定类型参数

公共任务DeleteEmployeeSchedule(字符串employeeId,字符串LoantySpecode)
{
var scheduleList=_repository.FindBy(e=>e.EmployeeId==EmployeeId&&e.LoanTypeCode==LoanTypeCode).Result.ToList();
scheduleList.Clear()
返回Task.FromResult();
}
嗨,伙计们,我又换了密码。这次列表中的项目没有被删除。这是否意味着RemoveAll()不会从数据库中删除记录。下面的代码不会删除记录

public async Task<bool> DeleteEmployeeSchedule(string employeeId, string loantypecode)
  {
    var scheduleList =    _repository.FindBy(e => e.EmployeeId == employeeId && e.LoanTypeCode == loantypecode).Result.ToList();
    scheduleList.RemoveAll(employee => employee.EmployeeId == employeeId);
    await _repository.DbContext.SaveChangesAsync();
    return  true;
  }
public异步任务DeleteEmployeeSchedule(字符串employeeId,字符串loantypecode)
{
var scheduleList=_repository.FindBy(e=>e.EmployeeId==EmployeeId&&e.LoanTypeCode==LoanTypeCode).Result.ToList();
scheduleList.RemoveAll(employee=>employee.EmployeeId==EmployeeId);
wait_repository.DbContext.saveChangesSync();
返回true;
}

您有一些语法错误,缺少
Task.FromResult()的参数传入布尔值将回答您的问题

将行更改为:
returntask.FromResult(true)将修复错误消息

此外,您可以重构调用以使用'wait:

public async Task<bool> DeleteEmployeeSchedule(string employeeId, string loantypecode)
{
     var scheduleList = (await _repository.FindBy(e => e.EmployeeId == employeeId && e.LoanTypeCode == loantypecode).ToList();

     scheduleList.Clear()

     //NOTE: however your error occurred on the line below due to wrong syntax, you have to pass in a boolean value eg. true/false
     return Task.FromResult(true);
}  
scheduleList
包含与您的条件匹配的实体,将它们从该列表中删除或调用
.Clear()
不会影响DbContext中的实体。您必须调用DbContext来删除,如下所示:

_repository.DbContext.Schedule.RemoveRange(scheduleList);

然而,
.Schedule
是一个假设,因为我们不知道您的_存储库是什么样子的,
.DbContext
到底是什么数据类型,以及您的
DbContext
实现中的
DbSet
是什么。

没有人会读取异常消息。无法从用法推断方法“Task.FromResult(TResult)”的类型参数意味着编译器无法从用法推断方法“Task.FromResult(TResult)”的类型参数。您的
Task.FromResult()
没有参数,它必须有
bool
类型的参数。如何从
scheduleList
返回
bool
List.Clear()
只会清除
列表的内容。它不会从源存储库中删除记录。您的代码正在创建一个新列表,然后将其清除,但它没有进行任何有意义的更改。使用RemoveAnge或remove all如何?@lutakyn,您可以显示您的存储库吗?“将确实删除”-不,它没有。@Enigmativity您看不到返回类型无法保证它是System.Collections.Generic.list它可以,据我们所知,它是一个自定义类,在clear上保持更改。我们也不知道存储库类型是否是围绕DbContext的自定义实现。@Tomek我打赌结果是
IEnumerable
和LINQ
。ToList()
扩展正在返回
List
,因此
Clear()
将不起任何作用。@vasily.sib fairenough@Tomek另外,你能添加一个正确的代码吗(使用
async/await
)来自问题,以防将来有人会发现这个问题?
public async Task<bool> DeleteEmployeeSchedule(string employeeId, string loantypecode) 
{
    var scheduleList = (await _repository.FindBy(e => e.EmployeeId == employeeId && e.LoanTypeCode == loantypecode)).ToList();

    scheduleList.RemoveAll(employee => employee.EmployeeId == employeeId);
    await _repository.DbContext.SaveChangesAsync();
    return true;
}
_repository.DbContext.Schedule.RemoveRange(scheduleList);