我正在使用4个值填充转发器控件。
1 Class_1
2 Class_2
3 Class_4
4 Class_3
Repeater绑定索引值,因此当显示repeater时,它显示数据为:
Class_1
Class_2
Class_4
Class_3。
但我想将数据显示为:
Class_1
Class_2
的 Class_3
Class_4。
我需要在绑定时更改序列。 在绑定或显示数据时,我需要首先显示索引4的值,然后在索引3处显示。
答案 0 :(得分:0)
上面是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()
。
这是打印“First”,“Second”,“Third”,“Fourth”的例子,而在List中它们将按顺序排列为“First”,“Second”,“Fourth”,“Third”。
static void Main(string[] args)
{
MyEnumerable<string> myEnumerable = new MyEnumerable<string>()
{
"First","Second","Fourth","Third"
};
foreach (var tmp in myEnumerable)
{
Console.WriteLine(tmp);
}
}