# Class LoopForeach OptimaJet.Workflow.Plugins.LoopsPlugin.LoopForeach Namespace: [OptimaJet.Workflow.Plugins.LoopsPlugin](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.LoopsPlugin/) ```csharp public class LoopForeach : Loop ``` ## Type Hierarchy - [Loop](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.LoopsPlugin/Loop/) - LoopForeach Current type ## Constructors `public LoopForeach(List values)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `values` | `List` | | ## Properties `public override string LoopType { get; }` ## Methods `public override Task InitAsync(ProcessInstance processInstance)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `processInstance` | `ProcessInstance` | | ### Returns | Type | Description | | --- | --- | | `Task` | | `protected override LoopCounter DoStep(LoopCounter counter, StepsType stepType)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `counter` | `LoopCounter` | | | `stepType` | `StepsType` | | ### Returns | Type | Description | | --- | --- | | `LoopCounter` | | `protected override bool ConditionValid(LoopCounter counter)` ### Parameters | Name | Type | Description | | --- | --- | --- | | `counter` | `LoopCounter` | | ### Returns | Type | Description | | --- | --- | | `Boolean` | | ## Fields `public List Values` [Previous LoopForDateTime](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.LoopsPlugin/LoopForDateTime/) [Next LoopForInt](https://api.workflowengine.io/core/OptimaJet.Workflow.Plugins.LoopsPlugin/LoopForInt/)