以下代码示例当然有效:
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的最佳方法(也许也是最短路径)是什么?