[英]Return Type for Async Method in C#
我正在编写一个删除员工贷款时间表的方法。这意味着我必须删除结果集,它是一个列表。 我读到List.Clear()可以删除列表。 我有一个来自接口的自定义方法存储库,它是异步的并返回IEnumerable 。 我的问题是删除列表后异步方法的返回类型。错误是
无法从用法推断方法“Task.FromResult(TResult)”的类型参数。 尝试明确指定类型参数。
public Task<bool> DeleteEmployeeSchedule(string employeeId, string loantypecode)
{
var scheduleList = _repository.FindBy(e => e.EmployeeId == employeeId && e.LoanTypeCode == loantypecode).Result.ToList();
scheduleList.Clear()
return 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;
}
你有一些语法错误,你缺少Task.FromResult();
的参数Task.FromResult();
传入一个布尔值会回答你的问题。
将您的行更改为: return Task.FromResult(true);
将修复您的错误消息。
此外,您可以重构您的调用以使用 `await:
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);
}
编辑:在没有看到更多代码的情况下,例如您的_repository
是什么数据类型以及它是如何实现的,我们必须假设太多事情......正如评论之一所述,这不会在数据库中持续存在。
EDIT2: @lutakyn 将以下代码更改作为评论发布(请使用更新后的代码更新您的初始帖子)
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;
}
scheduleList
包含与您的条件匹配的实体,从该列表中删除它们或调用.Clear()
不会影响您的 DbContext 中的实体。 你必须调用你的 DbContext 删除,如:
_repository.DbContext.Schedule.RemoveRange(scheduleList);
然而.Schedule
是一个假设,因为我们不知道你的.DbContext
是什么样子, .DbContext
究竟是什么数据类型以及你的DbSet<>
在你的DbContext
实现中是什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.