当listbox.i中的用户选择日期将在我的示例问题中显示时,我想更改数组中的数据位置
array = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
如果用户选择text =" Mar"列表框中的值= 3 结果数组应该是这样改变::
array = {"Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Jan", "Feb"}
我怎么能这样做。谢谢。
答案 0 :(得分:2)
var array = new[] {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
var value = 3; // value >= 1
array = array.Skip(value - 1).Concat(array.Take(value - 1)).ToArray();
或
array = array.Select((_, i) => array[(i + value - 1) % array.Length]).ToArray();
产生
三月 四月 可以 君 七月 八月 九月 十月 十一月 十二月 一月 2月
答案 1 :(得分:1)
我相信最有效的方式是:
public string[] ShiftArray(string[] array, int shiftBy)
{
string[] newArray = new string[array.Length];
Array.Copy(array, shiftBy, newArray, 0, array.Length - shiftBy);
Array.Copy(array, 0, newArray, array.Length - shiftBy, shiftBy);
return newArray;
}