【发布时间】:2020-07-09 16:55:57
【问题描述】:
我有一个带有表达式的过滤方法,像这样:
public IQueryable<Alert> GetAlerts(Expression<Func<Alert, bool>> filter, bool includeDone = false)
{
var query = _patientDbContext.Alerts
.Where(filter);
if (!includeDone)
{
query = query.Where(i => !i.IsDone);
}
query = query.OrderBy(i => i.Deadline);
return query;
}
但是现在我想在实际函数中调用这个过滤方法
public async Task<List<Alert>> GetAllAlertsForOrganisation(int organisationId, DateTime? beginDate, DateTime? endDate)
{
var query2 = GetAlerts(i => i.OrganisationId == organisationId && (beginDate == null || i.CreatedAt <= endDate) &&
(endDate == null || i.CreatedAt >= beginDate)).ToList();
return await ....//What to call the GetAlerts method?
.ToListAsync();
}
【问题讨论】:
-
GetAlerts方法没有异步操作,为什么需要异步调用? -
因为它是.net核心应用。所以数据来自数据库。否则获取数据需要很长时间
-
不,方法是建库查询,不会执行查询。
ToListAsync()执行查询。 -
@weichch。是的,你是对的。但是如何调用方法呢?
-
你只需要
await GetAlerts(alert => alert.IdontKnow == desiredValue).ToListAsync();
标签: c# linq asp.net-core iqueryable