14 Stimmen

IEnumerable<int> in int[] umwandeln

Wie konvertiere ich von einer IEnumerable-Variable zu einem int[] in Variable in c#?

19voto

Andras Zoltan Punkte 41403

を使用します。 .ToArray() Erweiterungsmethode, wenn Sie in der Lage sind, die System.Linq

Wenn Sie mit .Net 2 arbeiten, können Sie könnte einfach abkupfern, wie System.Linq.Enumerable die . ToArray Erweiterungsmethode (ich habe den Code hier fast wörtlich übernommen - braucht es ein Microsoft®?):

struct Buffer<TElement>
{
    internal TElement[] items;
    internal int count;
    internal Buffer(IEnumerable<TElement> source)
    {
        TElement[] array = null;
        int num = 0;
        ICollection<TElement> collection = source as ICollection<TElement>;
        if (collection != null)
        {
            num = collection.Count;
            if (num > 0)
            {
                array = new TElement[num];
                collection.CopyTo(array, 0);
            }
        }
        else
        {
            foreach (TElement current in source)
            {
                if (array == null)
                {
                    array = new TElement[4];
                }
                else
                {
                    if (array.Length == num)
                    {
                        TElement[] array2 = new TElement[checked(num * 2)];
                        Array.Copy(array, 0, array2, 0, num);
                        array = array2;
                    }
                }
                array[num] = current;
                num++;
            }
        }
        this.items = array;
        this.count = num;
    }
    public TElement[] ToArray()
    {
        if (this.count == 0)
        {
            return new TElement[0];
        }
        if (this.items.Length == this.count)
        {
            return this.items;
        }
        TElement[] array = new TElement[this.count];
        Array.Copy(this.items, 0, array, 0, this.count);
        return array;
    }
}

Mit diesem können Sie dies einfach tun:

public int[] ToArray(IEnumerable<int> myEnumerable)
{
  return new Buffer<int>(myEnumerable).ToArray();
}

16voto

Jon Skeet Punkte 1325502

Rufen Sie an. ToArray nach einer using-Direktive für LINQ:

using System.Linq;

...

IEnumerable<int> enumerable = ...;
int[] array = enumerable.ToArray();

Dies erfordert .NET 3.5 oder höher. Teilen Sie uns mit, wenn Sie mit .NET 2.0 arbeiten.

3voto

sehe Punkte 346808
IEnumerable<int> i = new List<int>{1,2,3};
var arr = i.ToArray();

2voto

Nagg Punkte 6080
IEnumerable to int[] - enumerable.Cast<int>().ToArray();
IEnumerable<int> to int[] - enumerable.ToArray();

1voto

Goblin Punkte 7780
IEnumerable<int> ints = new List<int>();
int[] arrayInts = ints.ToArray();

Vorausgesetzt, Sie verwenden Linq :)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X