using System.Collections.Generic;
using System.Threading.Tasks;
public async static Task Main()
List<string> names = ["Alice", "Bob", "Charlie"];
var upperCaseNamesList = await names.SelectAsync(async name =>
Console.WriteLine(string.Join(",", upperCaseNamesList));
public static class AsyncEnumerableExtensions
public static async Task<IEnumerable<TResult>> SelectAsync<TSource, TResult>(
this IEnumerable<TSource> source,
Func<TSource, Task<TResult>> selector,
CancellationToken cancellationToken = default
.SelectAwait(async x => await selector(x))
.ToListAsync(cancellationToken);