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>
我试图用更简单的东西替换tasks.IndexOf(t) + 1
。是否有内置功能?
Hrmm xml文字在这里似乎没有很好的翻译......
答案 0 :(得分:5)
Enumerable.Select
的重载支持将索引与对象本身一起传递。你可以使用那个:
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>
答案 1 :(得分:2)
Select
超载需要Func<TSource, int, TResult>
(即Function(t,i)
或(t,i) => {...}
) - int
是索引。
答案 2 :(得分:1)
您可以使用使用索引器的Select overload。有关类似内容,请参阅this answer