C# 在C中排列匹配模式中的数组值#

C# 在C中排列匹配模式中的数组值#,c#,arrays,sorting,C#,Arrays,Sorting,有谁能帮我根据特定的值改变数组的顺序吗?也就是说,如果我的数组=[0,1,2,3,4,5,6],我想重新排列数组的值,如果a的值像5,那么数组的顺序应该像[5,6,0,1,2,3,4],如果我的值是4,那么数组应该从[4,5,6,0,1,2,3]开始 string[] GetDays; //"Here i will get value from User" string value; //"This value will also come from User but will always b

有谁能帮我根据特定的值改变数组的顺序吗?也就是说,如果我的数组=[0,1,2,3,4,5,6],我想重新排列数组的值,如果a的值像5,那么数组的顺序应该像[5,6,0,1,2,3,4],如果我的值是4,那么数组应该从[4,5,6,0,1,2,3]开始

string[] GetDays; //"Here i will get value from User"
string value; //"This value will also come from User but will always be present in above Array"

if(GetDays.Find(value))
{
    //Rearrange the sort starting with value in ascending
}
注意:数组元素不是常数,因此我们必须通过编程来安排顺序,因为一些时间数组可以是[1,3,5,6],如果我的值为5,那么我的数组应该像[5,6,1,3]一样改变。
感谢使用数组。使用比较器排序:如下所示:

     var a=new []{1,2,3,4,5,6};
     var v=5;
     //Create IComparer
     Comparison<int> comparison = (x,y) => (x >= v && y < v) 
                                ? -1             // Case x is over user value but y is not: x ordered before y
                                : x.CompareTo(y); // otherwise standard comparison;
     Array.Sort(a, comparison);
var a=new[]{1,2,3,4,5,6};
var v=5;
//创建IComparer
比较比较=(x,y)=>(x>=v&&y
这可以通过几行实现:

int[] test = {0, 1, 2, 3, 4, 5, 6};
var userValue = 3;
var sorted = test.GroupBy(i => i < userValue).OrderBy(i => i.Key)
            .Select(i => i.OrderBy(j => j)).SelectMany(i => i).ToArray();
string[]GetDays={“s”、“t”、“a”、“c”、“k”};
string[]temparray=新字符串[GetDays.Length];
字符串值=“c”;
int index=Array.IndexOf(GetDays,value);
对于(inti=0;i=GetDays.Length?0:index+1;
}

temparray
将包含所需的输出。

该代码是关于什么的?似乎完全不相关。该算法非常简单,但请说明您实际尝试了什么以及什么不起作用。Stackoverflow不是“请为我的站点编写此代码”。
arr=arr.Skip(index)。Take(arr.Length-index)。Concat(arr.Take(index)).ToArray();
您是否有性能/内存要求来强制您内联排序数组?或者您可以直接使用Linq(如Skip(index).Union(Take(index))?您可能需要为该代码添加一个解释。谢谢:我把它缩短了,可能更清楚:注释有用吗?
{3,4,5,6,0,1,2}
string[] GetDays = {"s","t","a","c","k"};
string [] temparray = new string[GetDays.Length];
string value = "c";
int index = Array.IndexOf<string>(GetDays, value);
for(int i=0;i<GetDays.Length;i++)
{
    temparray[i] = GetDays[inde];
    index = index+1>=GetDays.Length?0:index+1;          
}