Вернуть анонимный тип в Func

Есть метод, загружающий все внедренные ресурсы из библиотеки по указанному пути.

public static async Task<IEnumerable<(string filePath, string content)>> LoadResourcesAsync(Assembly assembly, string path)
{
    string assemblyName = assembly.GetName().Name;
    var files = assembly.GetManifestResourceNames().Where(x => x.StartsWith($"{assemblyName}.{path}"));

    List<(string filePath, string content)> result = new();

    foreach (var file in files)
    {
        using Stream stream = assembly.GetManifestResourceStream(file);
        using StreamReader reader = new(stream);
        string content = await reader.ReadToEndAsync();
        result.Add(new(file, content));
    }
    return result;
}

Для интереса попробовал переписать foreach на select, но не смог. Код выглядит ужасно и сложно, но что я делаю не так?

return files.Select(async (string x, (string filePath, string content)) =>
{
    using Stream stream = assembly.GetManifestResourceStream(x);
    using StreamReader reader = new(stream);
    string content = await reader.ReadToEndAsync();
    return (x, content);
});

Ответы (1 шт):

Автор решения: Lapish

Верный вариант (EvgeniyZ):

return await Task.WhenAll(files.Select(async x =>
{
    using Stream stream = assembly.GetManifestResourceStream(x);
    using StreamReader reader = new(stream);
    string content = await reader.ReadToEndAsync();
    return (x, content);
}));
→ Ссылка