【问题标题】:Change data position in array c#更改数组c#中的数据位置
【发布时间】:2014-05-12 02:52:48
【问题描述】:

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

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

我怎么能这样。谢谢。

【问题讨论】:

  • 强烈建议您学习使用正确的数据结构来表示数据,而不是将所有内容都放在一堆字符串中。 ASP.Net 不是 PHP。
  • @HighCore 看起来更像LISP 任务:) 多次移动“第一项到列表末尾”...

标签: c# asp.net arrays


【解决方案1】:
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】:

    我相信最有效的方法是:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-15
      • 2015-08-15
      • 1970-01-01
      相关资源
      最近更新 更多