Comment convertir une variable IEnumerable en int [] dans la variable C#?Convertir IEnumerable <int> en int []
12
A
Répondre
18
Utilisez la méthode d'extension .ToArray()
si vous êtes en mesure d'utiliser System.Linq
Si vous êtes en .Net 2 vous pouvez simplement arnaquer comment System.Linq.Enumerable implémente le. ToArray
méthode d'extension (je l'ai levé le code ici presque mot pour mot - at-il besoin d'un 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;
}
}
Avec cela, vous pouvez simplement faire ceci:
public int[] ToArray(IEnumerable<int> myEnumerable)
{
return new Buffer<int>(myEnumerable).ToArray();
}
3
IEnumerable<int> i = new List<int>{1,2,3};
var arr = i.ToArray();
14
Appel ToArray
après une directive d'utilisation pour LINQ:
using System.Linq;
...
IEnumerable<int> enumerable = ...;
int[] array = enumerable.ToArray();
Ceci nécessite .NET 3.5 ou supérieur. Faites-nous savoir si vous êtes sur .NET 2.0.
1
IEnumerable to int[] - enumerable.Cast<int>().ToArray();
IEnumerable<int> to int[] - enumerable.ToArray();
1
IEnumerable<int> ints = new List<int>();
int[] arrayInts = ints.ToArray();
à condition que vous utilisez LINQ :)
Questions connexes
- 1. Convertir Jagged Array en IEnumerable <KeyValuePair <int,int>>?
- 2. Comment convertir un IEnumerable <IEnumerable <T>> en IEnumerable <T>
- 3. int array à IEnumerable <MyTestObj>?
- 4. Convertir IEnumerable <XElement> en XElement
- 5. Convertir IEnumerable <dynamic> en JsonArray
- 6. Convertir IEnumerable <Dictionnaire <int, string>> Liste <Dictionnaire <int, string>>
- 7. NHibernate ICritery ajouter IEnumerable <int>?
- 8. Le moyen le plus simple de transformer un dictionnaire <int, Dictionnaire <int, Foo>> en IEnumerable <IEnumerable <Foo>> en Linq?
- 9. C# Impossible de convertir IEnumerable <Base> en IEnumerable <Derived>
- 10. Convertir le tableau <int^>^en int *
- 11. casting IEnumerable <int> à IEnumerable <long> ne
- 12. Convertir IEnumerable <T> à string []
- 13. Convertir IEnumerable en Liste <string> en .net 2.0
- 14. Comment convertir une liste <KeyValuePair <int,int>> en int [] []?
- 15. convertir IEnumerable <string> à XPathNodeIterator
- 16. Convertir DataRowCollection à IEnumerable <T>
- 17. Convertir IEnumerable <byte[]> à l'octet []
- 18. Comment convertir un vecteur <pair <int,int>> en multimap <int,int> efficacement?
- 19. LINQ - Impossible de convertir implicitement le type 'IEnumerable <IEnumerable <.XElement>>' à 'IEnumerable <.XElement>'
- 20. Jetez un hashtable.Keys dans Liste <int> ou autre IEnumerable <int>
- 21. convertir Dictionary <int, Enumerable> en Dictionary <int, Enumerable> en inversant le contenu
- 22. Comment convertir IEnumerable <table> en XML de Nhibernate?
- 23. comment convertir les IEnumerable <type> en type?
- 24. Comment convertir un IEnumerable <DataColumn> en un Datatable?
- 25. ne peut pas convertir 'System.Collections.Generic.IEnumerable <int>' à 'System.Linq.IQueryable <int?>
- 26. Convertir datatable en IEnumerable <T> pour passer au résultat <T> (IEnumerable <T> data);
- 27. Linq: Convertir IEnumerable <Point> à un IEnumerable <float>
- 28. briser une requête <int> IEnumerable qui utilise Enumerable.Range
- 29. Muliplying toutes les valeurs dans IEnumerable <int>
- 30. C++ IEnumerable <int> = class-> method(); dans WinForms
utiliser le .ToArray() Méthode d'extension. –
Aux descendants: pour vous, cela peut sembler évident, mais est-ce que cela mérite un DV? Les réponses à la plupart des questions sont évidentes pour quelqu'un. – spender
@spender - Comme au UK gameshow Qui veut gagner des millions? C'est seulement facile si vous connaissez la réponse! Ce n'est pas une mauvaise question - c'est tout à fait raisonnable et 5 réponses disent que c'est responsable. Peut-être qualifier pour une dupe cependant. –