首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在运行时更改Repeater索引

在运行时更改Repeater索引
EN

Stack Overflow用户
提问于 2017-05-02 07:12:33
回答 1查看 235关注 0票数 1

我有一个中继器控制填充4个值。

1个Class_1

2个Class_2

3个Class_4

4 Class_3

中继器是对索引值的绑定,所以当显示中继器时,它将数据显示为:

Class_1

Class_2

Class_4

Class_3。

但我想将数据显示为:

Class_1

Class_2

Class_3

Class_4.

我需要在绑定的时候改变顺序。在绑定或显示数据时,我需要先显示索引4的值,然后显示索引3的值。

EN

回答 1

Stack Overflow用户

发布于 2017-05-02 09:33:43

上面是IEnumerable类实现的例子,它将按顺序1、2、4、3提供值:

代码语言:javascript
运行
复制
public class MyEnumerable<T> : IEnumerable<T>
{
    private List<T> _list;

    public MyEnumerable()
    {
        _list = new List<T>();
    }

    public void Add(T value)
    {
        _list.Add(value);
    }

    public bool Remove(T value)
    {
        return _list.Remove(value);
    }

    public bool Exists(Predicate<T> value)
    {
        return _list.Exists(value);
    }

    public bool Contains(T value)
    {
        return _list.Contains(value);
    }
    public IEnumerator<T> GetEnumerator()
    {
        for (int i = 0; i < _list.Count; i++)
        {
            if (i == 2)
            {
                i++;
                yield return _list[i];
                yield return _list[i-1];
            }
            else
            {
                yield return _list[i];
            }
        }
    }

    IEnumerator IEnumerable.GetEnumerator()
    {
        for (int i = 0; i < _list.Count; i++)
        {
            if (i == 3)
            {
                yield return _list[i + 1];
                yield return _list[i];
                i += 2;
            }
            else
            {
                yield return _list[i];
                i++;
            }
        }
    }
}

但是,如果您的列表将超过4项,则需要根据您的需要相应地更改GetEnumerator()

这个例子将打印“第一”、“第二”、“第三”、“第四”,而在列表中,它们将按“第一”、“第二”、“第四”、“第三”顺序排列。

代码语言:javascript
运行
复制
static void Main(string[] args)
{
    MyEnumerable<string> myEnumerable = new MyEnumerable<string>()
    {
        "First","Second","Fourth","Third"
    };
    foreach (var tmp in myEnumerable)
    {
        Console.WriteLine(tmp);
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43732155

复制
相关文章

相似问题

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