更改数组c#中的数据位置

时间:2014-05-12 02:52:49

标签: c# asp.net arrays

当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"}

我怎么能这样做。谢谢。

2 个答案:

答案 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;
}