2008-12-16 8 views
4

Ce que je voudrais faire est d'utiliser l'élégance de LINQ tout en maintenant un itérateur ....LINQ, itérateurs, la sélection et la projection

essentiellement

Class A 
{ 
    int Position; 
    string Name; 
} 

si j'ai une liste de chaînes, Je veux les projeter dans List<A> mais ont la position être placés dans la projection ...

List<string> names; //filled with strings 

quelque chose comme

List<A> foo = (from s in names select s).ToList(); 

mais ont itérer aussi plus et remplir Position ..

est-ce possible?

{{Position:0,Name: "name1"},{Position:1, Name: "name2"}, {Position:2, Name: "name3"}....} 

Répondre

10

Vous pouvez le faire:

var listOfStrings = new List<string> {"name1", "name2", "name3", "name4"}; 
    var foo = listOfStrings.Select((value, position) => new {position, value}).ToList(); 

Position sera incrémenté comme un indice 0-démarrage, vérifiez la surcharge Select Method.

Questions connexes