有没有办法在.net上组合foreach?

时间:2016-04-01 00:52:41

标签: c# .net foreach

我有一系列的20个不同阵列, 并且对于代码的唯一观点而言,希望有一个foreach而不是多个调用

我有什么:

foreach (var item in actionEvent.Colors)
    UpdateComponent(item.ComponentId, item);
foreach (var item in actionEvent.Links)
    UpdateComponent(item.ComponentId, item);
foreach (var item in actionEvent.Texts)
    UpdateComponent(item.ComponentId, item);

我希望拥有什么

foreach (var item in actionEvent.Colors, actionEvent.Links,actionEvent.Texts)
    UpdateComponent(item.ComponentId, item);

我不知道它是否存在类似于union或类似的东西(不,我不能迭代actionEvent,因为有些数组可能会导致其余代码爆炸)< / p>

1 个答案:

答案 0 :(得分:1)

当然,您可以使用concat(假设它们的类型相同):

foreach (var item in actionEvent.Colors.Concat(actionEvent.Links).Concat(actionEvent.Texts))
    UpdateComponent(item.ComponentId, item);

如果您想检查并删除重复项,也可以使用Union代替Concat

如果他们都使用UpdateComponent的相同重载,但具有不同的类型(例如,如果方法定义为UpdateComponent(int, object),但您可能有Link,{ {1}},Text) - 然后你需要投射集合,如下所示:

Color