For extension to List<T>

I have written simple For extension methods for List<T> which allows you to execute a lambda statement body (Action) on the list items given the Start, End and Step value of the loop.
 
In another overload, the End (condition) can be specified in a lambda statement block too.

The ForEach method of the List allows a certain lambda statement body to be executed against all the items in the list.
 
This For one allows you to control the items passed to the statement body.
 
You can think of these extensions as lambda wrappers to a for loop on a list.

For extensions to List<T> :

 
using
System;
using
System.Collections.Generic;

namespace
System.Collections.Generic
{
   public static class ExtensionMethods
   {
      public static void For<T>(this List<T> List, int Start, int End, int Step, Action<T> Action)
      {
         for (int i = Start; i < End; i = i + Step)
         {
            Action.Invoke(List[i]);
         }
      }
      public static void For<T>(this List<T> List, int Start, Func<int, bool> End, int Step, Action<T> Action)
      {
         for (int i = Start; End.Invoke(i); i = i + Step)
         {
            Action.Invoke(List[i]);
         }
      }
   }
}

Sample Usage :

 
public class Friend
{
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

 
List<Friend> lst = new List<Friend>();

Friend
f1 = new Friend { FirstName = "Shantanu", LastName = "Kush" };
Friend f2 = new Friend { FirstName = "Vijay", LastName = "Kodwani" };
Friend f3 = new Friend { FirstName = "Naveed", LastName = "Ahmed" };
Friend f4 = new Friend { FirstName = "Parvez", LastName = "Naqati" };

lst.Add(f1);
lst.Add(f2);
lst.Add(f3);
lst.Add(f4);


//This will execute a statement block against every second (step) friend in the list

lst.For(0, lst.Count - 1, 2, (friend) => {
MessageBox.Show(friend.FirstName); MessageBox.Show(friend.LastName); });

//This will execute a statement block against every second (step) friend in the list.

//The End condition passed is also a lambda statement block
lst.For(0, i => i < lst.Count - 1, 2, (friend) => {
MessageBox.Show(friend.FirstName); MessageBox.Show(friend.LastName); });