2009-12-01 4 views
2
Dim project = new Project(1) 
Dim tasks = Task.GetTasks() 
Return <?xml version="1.0" encoding="UTF-8"?> 
       <Project xmlns="http://schemas.microsoft.com/project"> 
        <Name><%= project.name %></Name> 
        <Tasks> 
         <%= tasks.Select(Function(t) _ 
          <Task> 
           <ID><%= tasks.IndexOf(t) + 1 %></ID>        
          </Task> _ 
          ) %> 
        </Tasks> 
       </Project> 

Je suis en train de remplacer tasks.IndexOf(t) + 1 avec quelque chose d'un peu plus simple. Y a-t-il des fonctionnalités intégrées pour cela?Accédez à un entier incrémenter au cours LINQ Sélectionnez

hrmm xml littéraux ne semblent pas traduire bien ici ....

Répondre

5

Il y a une surcharge pour Enumerable.Select qui prend en charge le passage d'un index avec l'objet lui-même. Vous pouvez utiliser celui-ci:

Dim project = new Project(1) 
Dim tasks = Task.GetTasks() 
Return <?xml version="1.0" encoding="UTF-8"?> 
       <Project xmlns="http://schemas.microsoft.com/project"> 
        <Name><%= project.name %></Name> 
        <Tasks> 
         <%= tasks.Select(Function(t, idx) _ 
          <Task> 
           <ID><%= idx + 1 %></ID>        
          </Task> _ 
          ) %> 
        </Tasks> 
2

Il y a une surcharge de Select qui prend un Func<TSource, int, TResult> (à savoir un Function(t,i) ou (t,i) => {...}) - le int est l'indice.

Questions connexes