假设我有所有的类实现IGenerator
List<IGenerator> generators = new List<IGenerator> { new Jane1Generator(), new Jane2Generator(), new JohnGenerator() };
和
public interface IGenerator
{
string GetFirstName();
Task<List<Items>> Generate();
}
因此,分组generators
依据GetFirstName()
将Jane1
和Jane2
放在同一类别中。如何将任务合并为一个任务,并保持Jane1
分开。我想将两个 Janes 的结果合并到一个列表中。Jane2
John
foreach (var groupedByName in generators.GroupBy(i => i.GetFirstName()))
{
//Combine Tasks of Jane1 & Jane2
//give me a new Task that's is the sum of Jane1 & Jane2 tasks.
//almost like List<Items>.Join(AnotherList) wrapped with a Task, so I can wait for both Tasks and Get combined Results instead.
}
所以如果我创建一个List<Task<List<Items>>> tasks = new List<Task<List<Items>>>();
我希望tasks
列表只包含两个元素。一个是 Jane1&Jane2 的组合任务,另一个是 John,所以我可以
await Task.WhenAll(tasks);
Console.Write("Done");