我有这个方法:
/// <summary>
/// Gets the query filter.
/// </summary>
/// <param name="queryText">The query text.</param>
/// <returns>The query filter predicate.</returns>
private Task<Predicate<int>> GetQueryFilter(string queryText)
{
// Return the query filter predicate
return new Predicate<int>(async(id) =>
{
// Get the employee
StructuredEmployee employee = await LoadEmployee(id);
// If employee not found - return false
if (employee == null)
return false;
// Else if employee is found
else
// Check subject and body
return (!string.IsNullOrWhiteSpace(employee.FirstName)) && employee.FirstName.Contains(queryText)
|| (!string.IsNullOrWhiteSpace(employee.MiddleName)) && employee.MiddleName.Contains(queryText)
|| (!string.IsNullOrWhiteSpace(employee.LastName)) && employee.LastName.Contains(queryText);
});
}
我希望此方法异步返回,即Task<Predicate<int>>
。
我该怎么做呢?
目前我在async(id)
上有编译错误。
答案 0 :(得分:1)
你提出的问题没有多大意义。
Task<Predicate<int>>
是一个返回谓词的异步方法。
您要做的是编写一个异步操作的谓词。换句话说,Func<int, Task<bool>>
将是异步谓词。
private Func<int, Task<bool>> GetQueryFilter(string queryText)
{
return new Func<int, Task<bool>>(async (id) =>
{
...
};
}
但实际的异步谓词可能不适用于调用它的任何代码。你必须确定处理它的最佳方法。