.net 将私有谓词方法转换为异步方法

.net 将私有谓词方法转换为异步方法,.net,c#-4.0,.net-4.5,async-await,winrt-async,.net,C# 4.0,.net 4.5,Async Await,Winrt Async,我有这个方法: /// <summary> /// Gets the query filter. /// </summary> /// <param name="queryText">The query text.</param> /// <returns>The query filter predicate.</returns> private Task<Predicate<int>> GetQue

我有这个方法:

/// <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);
    });
}
//
///获取查询筛选器。
/// 
///查询文本。
///查询筛选器谓词。
私有任务GetQueryFilter(字符串queryText)
{
//返回查询筛选器谓词
返回新谓词(异步(id)=>
{
//抓住员工
StructuredEmployee employee=wait LoadEmployee(id);
//如果未找到员工-返回false
if(employee==null)
返回false;
//否则,如果找到员工
其他的
//检查主体和主体
返回(!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
。 我该怎么做呢?
目前我在
async(id)

上有一个编译错误,您所问的没有多大意义

Task
是一个返回谓词的异步方法

private Func<int, Task<bool>> GetQueryFilter(string queryText)
{
  return new Func<int, Task<bool>>(async (id) =>
  {
    ...
  };
}
您要做的是编写一个异步动作的谓词。换句话说,
Func
将是一个异步谓词

private Func<int, Task<bool>> GetQueryFilter(string queryText)
{
  return new Func<int, Task<bool>>(async (id) =>
  {
    ...
  };
}
private Func GetQueryFilter(字符串queryText)
{
返回新函数(异步(id)=>
{
...
};
}

但是一个实际的异步谓词对于调用它的任何代码都可能不起作用。您必须确定处理它的最佳方法。

这只是返回一个谓词-您确定要异步运行的是
GetQueryFilter
方法,而不是谓词本身吗?如果您想要异步美国谓词,那是另一回事。如果你能在这里解释一下最终目的,那会很有帮助。