Comment accéder à l'index dans l'objet IEnumerable en C#?
j'ai un objet innombrables. Je voudrais l'accès sur la base de l'indice par exemple:
for(i=0; i<=Model.Products; i++)
{
???
}
Est-ce possible?
26
demandé sur
Alexander Derck
2009-10-31 15:13:50
5 réponses
var myProducts = Models.Products.ToList();
for(i=0; i< myProducts.Count ; i++)
{
//myProducts[i];
}
18
répondu
Graviton
2009-10-31 15:07:31
tout d'Abord, êtes-vous sûr que c'est vraiment IEnumerator
et non IEnumerable
? Je soupçonne fortement que c'est en fait le dernier.
IEnumerator
), vous pouvez faire ceci:
using System.Linq;
...
var product = Model.Products.ElementAt(i);
si vous voulez énumérer toute la collection, mais aussi avoir un index pour chaque élément, alors les réponses de V. A. ou de Nestor sont ce que vous vouloir.
93
répondu
Pavel Minaev
2009-11-16 21:20:58
foreach(var item in Model.Products)
{
...item...
}
vous pouvez faire votre propre index si vous voulez:
int i=0;
foreach(var item in Model.Products)
{
... item...
i++;
}
26
répondu
Nestor
2009-10-31 12:16:51
foreach(var indexedProduct in Model.Products.Select((p, i)=> new {Product = p, Index = i})
{
...
...indexedProduct.Product...
...indexProduct.Index ...//this is what you need.
...
}
8
répondu
V.A.
2009-11-16 21:14:47
la meilleure façon de récupérer un élément par index est de référencer votre collection énumérable avec un tableau utilisant Linq de cette façon:
using System.Linq;
...
class Model {
IEnumerable<Product> Products;
}
...
// Somewhere else in your solution,
// assume model is an instance of the Model class
// and that Products references a concrete generic collection
// of Product such as, for example, a List<Product>.
...
var item = model.Products.ToArray()[index];
0
répondu
bert
2017-07-12 18:52:25