我有一系列的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>
答案 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