我有一个中继器控制填充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的值。
发布于 2017-05-02 09:33:43
上面是IEnumerable
类实现的例子,它将按顺序1、2、4、3提供值:
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()
。
这个例子将打印“第一”、“第二”、“第三”、“第四”,而在列表中,它们将按“第一”、“第二”、“第四”、“第三”顺序排列。
static void Main(string[] args)
{
MyEnumerable<string> myEnumerable = new MyEnumerable<string>()
{
"First","Second","Fourth","Third"
};
foreach (var tmp in myEnumerable)
{
Console.WriteLine(tmp);
}
}
https://stackoverflow.com/questions/43732155
复制相似问题