首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将索引号作为一个值放在foreach中?

如何将索引号作为一个值放在foreach中?
EN

Stack Overflow用户
提问于 2011-05-13 17:44:51
回答 3查看 163关注 0票数 1

我有以下代码:

代码语言:javascript
运行
复制
foreach (var SubTopic in Model.SubTopic.Description)
{
 <option value="xxx">SubTopic</option>
}

我想找到一种方法将索引号作为值插入到xxx中。第一行为01,第二选项行为02,依此类推。

有什么简单的方法可以做到这一点吗?

EN

回答 3

Stack Overflow用户

发布于 2011-05-13 17:47:29

使用for循环,如

代码语言:javascript
运行
复制
for (int i = 0; i < Model.SubTopic.Description.Count; i++)
    <option value="i">Model.SubTopic.Description[i]</option>

在C#中,您不能直接从foreach循环中访问实际索引。

票数 9
EN

Stack Overflow用户

发布于 2011-05-13 17:49:49

在循环外声明一个初始值为0的变量,并在循环内递增它。

票数 2
EN

Stack Overflow用户

发布于 2011-05-13 20:29:06

我将假设该集合没有按索引检索项的功能(如List),否则您将使用一个简单的for循环。

foreach构造没有实现这一点的内置机制,但它很容易通过helper类来完成。

代码语言:javascript
运行
复制
foreach (var item in ForEachHelper.WithIndex(Model.SubTopic.Description))
{
  Console.WriteLine("<option value=\"" + item.Index.ToString("00") + "\">" + item.Value + "</option");
}

这是helper类的样子。

代码语言:javascript
运行
复制
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;
        }            
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5990063

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档