我有以下代码:
foreach (var SubTopic in Model.SubTopic.Description)
{
<option value="xxx">SubTopic</option>
}
我想找到一种方法将索引号作为值插入到xxx中。第一行为01,第二选项行为02,依此类推。
有什么简单的方法可以做到这一点吗?
发布于 2011-05-13 20:29:06
我将假设该集合没有按索引检索项的功能(如List
),否则您将使用一个简单的for
循环。
foreach
构造没有实现这一点的内置机制,但它很容易通过helper类来完成。
foreach (var item in ForEachHelper.WithIndex(Model.SubTopic.Description))
{
Console.WriteLine("<option value=\"" + item.Index.ToString("00") + "\">" + item.Value + "</option");
}
这是helper类的样子。
public static class ForEachHelper
{
public sealed class Item<T>
{
public int Index { get; set; }
public T Value { get; set; }
public bool IsLast { get; set; }
}
public static IEnumerable<Item<T>> WithIndex<T>(IEnumerable<T> enumerable)
{
Item<T> item = null;
foreach (T value in enumerable)
{
Item<T> next = new Item<T>();
next.Index = 0;
next.Value = value;
next.IsLast = false;
if (item != null)
{
next.Index = item.Index + 1;
yield return item;
}
item = next;
}
if (item != null)
{
item.IsLast = true;
yield return item;
}
}
}
https://stackoverflow.com/questions/5990063
复制相似问题