LINQ:在哪里等待的最佳方式是什么?

时间:2015-01-29 12:18:59

标签: c# linq asynchronous async-await where

以下代码示例当然有效:

var ints = new List<int> { 1, 2, 3 };
var smallInts = ints.Where(i => i < 3);

但是如果需要在Where条件中调用异步方法呢?

var ints = new List<int> { 1, 2, 3 };
var smallInts = ints.Where(async i => { return await IsSmallInt(i); });

这会导致以下错误:

  

错误21:无法将异步lambda表达式转换为委托类型   'System.Func'。异步lambda表达式可能会返回   void,Task或Task,其中任何一个都无法转换为   'System.Func'。

当然我可以在这种情况下写一个foreach循环,但我不想。

var smallInts = new List<int>();
foreach (int i in ints)
    if (await IsSmallInt(i))
        smallInts.Add(i);

那么在Where条件中使用await的最佳方法(也许也是最短路径)是什么?

0 个答案:

没有答案