ExtensionMethod.NET Home of 880 C#, Visual Basic, F# and Javascript extension methods

ToList<T>(Func<object, T> func)

Converts an array of any type to List<T> passing a mapping delegate Func<object, T> that returns type T. If T is null, it will not be added to the collection. If the array is null, then a new instance of List<T>() is returned.

Source

public static List<T> ToList<T>(this Array items, Func<object, T> mapFunction)
{
    if (items == null || mapFunction == null)
        return new List<T>();            

    List<T> coll = new List<T>();
    for (int i = 0; i < items.Length; i++)
    {
        T val = mapFunction(items.GetValue(i));
        if(val != null)
            coll.Add(val);
    }
    return coll;
}

Example

--> Make another extension method

public static List<T> ToList<T>(this object[] items)
        {
            return items.ToList<T>(o => { return (T)o; });
        }

Reduces this : http://extensionmethod.net/Details.aspx?ID=351

To this:

public static List<T> EnumToList<T>() where T : struct
        {
            return Enum.GetValues(typeof(T)).ToList<T>(enumVal => { return (T)Enum.Parse(typeof(T), enumVal.ToString()); });
        }

--> Use in Linq

var myItems = from i in array.ToList<MyType>( o => { return (MyType)o; }) select i;

Author: James Levingston

Submitted on: 19 okt. 2010

Language: C#

Type: System.Array

Views: 11197