次のコード...LINQのと非同期ラムダ
using System;
using System.Linq;
using System.Threading.Tasks;
namespace ConsoleAsync
{
class Program
{
static void Main(string[] args)
{
MainAsync(args).Wait();
Console.ReadLine();
}
static async Task MainAsync(string[] args)
{
int[] test = new[] { 1, 2, 3, 4, 5 };
if (test.Any(async i => await TestIt(i)))
Console.WriteLine("Contains numbers > 3");
else
Console.WriteLine("Contains numbers <= 3");
}
public static async Task<bool> TestIt(int i)
{
return await Task.FromResult(i > 3);
}
}
}
はあなたに次のエラーを与える: - あなたは非同期で動作するにはどうすればよいのライン
if (test.Any(async i => await Test.TestIt(i)))
で
CS4010: Cannot convert async lambda expression to delegate type 'Func<int, bool>'. An async lambda expression may return void, Task or Task<T>, none of which are convertible to 'Func<int, bool>'.
Lambdasとlinq?
あなたはしないでください。少なくとも真っ直ぐな、すぐに使えるLINQではありません。 Rxを使用してください。 –
@KirillShlenskiyは答えを提出するように感じます... "あなたはできませんが、これは同じことを達成するためにRxを使う方法です"? – Mick