public static void For<T>(this IEnumerable<T> items, Action<T, int> predicate)
{
using (IEnumerator<T> iterator = items.GetEnumerator())
{
int index = 0;
while (iterator.MoveNext())
{
T item = iterator.Current;
predicate(item, index);
index++;
}
}
}
我正在使用linq扩展来枚举列表并使用集合的索引执行操作 - 就像for循环一样。
然后你可以使用像这样的方法
items.For((item, index) => item.Prop = item.Prop != MyMethod(index) ? MyMethod(index) : item.Prop);
这看起来是对的吗?
答案 0 :(得分:2)
试试这个:
public static void For<T>(this IEnumerable<T> items, Action<T, int> predicate)
{
int i=0;
foreach (T item in items)
{
predicate(item, i++);
}
}