改变数组中的数据位置

本文关键字:数据 位置 数组 改变 | 更新日期: 2023-09-27 18:02:45

当用户在列表框中选择日期时,我想改变数组中的数据位置。我将在我的例题中向你展示

array = {"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};

如果用户在列表框中选择text="Mar" value = 3结果数组应该像这样改变::

array = {"Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec", "Jan", "Feb"}
我怎么能这样做呢?谢谢你。

改变数组中的数据位置

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();

生产:

3月4月五月小君7月8月9月10月11月12月1月2月

我相信最有效的方法是:

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