鉴于:
电子邮件ID列表
我正在做什么:
使用BatchBlock组ID并为每个块调用Transformblock,简化的transformblock如下所示:
var readBatch = new TransformBlock<List<int>, IEnumerable<Email>>(idList =>
{
List<Email> mails = new List<Email>();
foreach(var id in idList)
{
mails.Add(new Email(id));
}
return mails;
});
现在我的下一个TransformBlock定义如下
TransformBlock<Email,EMail> filterStep;
我搜索的内容:
所以我需要一个块,它允许我将一个集合作为源并返回N-Elements作为结果。因此,在这种情况下,一个块接收IEnumerable<Email>
并在枚举中返回Email
个foreach条目。
所以我搜索的是BatchBlock的反面但我无法找到它。我忽略了什么吗?
答案 0 :(得分:6)
您需要的阻止是TransformManyBlock
。您从块的func返回IEnumerable<Email>
,它会自动单独传输每个项目:
var transformManyBlock = new TransformManyBlock<IEnumerable<Email>, Email>(emails => emails);
答案 1 :(得分:2)
TransformManyBlock可能就是你要找的东西。它需要TInput并返回IEnumerable(1:n)。