加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 将MultiDimensional数组排列为降序或升序

发布时间:2020-12-16 01:52:52 所属栏目:百科 来源:网络整理
导读:我试图将这个多维数组安排为升序或降序.但是,我需要第1列和第2列之间的关系仍然在一起(意味着我需要例如数组[0,1]和数组[0,2]的数据在一起或以某种方式相关.这是我现在的代码. int[,] time = new int[5,2]{{0,4},{1,5},{5,10},{3,{0,2}};var sorted = from x
我试图将这个多维数组安排为升序或降序.但是,我需要第1列和第2列之间的关系仍然在一起(意味着我需要例如数组[0,1]和数组[0,2]的数据在一起或以某种方式相关.这是我现在的代码.

int[,] time = new int[5,2]{{0,4},{1,5},{5,10},{3,{0,2}};
var sorted = from x in Enumerable.Range(0,time.GetLength(0))
                     from y in Enumerable.Range(0,time.GetLength(1))
                     select new{
                         X = x,Y = y,Value = time[x,y]
                    }into point
                    orderby point.Value descending
                    select point;

这有效,但它将我的所有数据分开.有没有办法在保持第1列和第2列的关系的同时对它们进行排序?

解决方法

听起来您希望将数据存储在多维数组中,但将数组中的每一行保留为单独的原子单元.另外,每个“点”的比较是X,然后是Y.

int[,2] { { 0,4 },{ 1,5 },{ 5,10 },{ 3,{ 0,2 } };

var sorted = from x in Enumerable.Range(0,time.GetLength(0))
                     select new Point()
                     {
                         X = time[x,0],Y = time[x,1]
                     } into point
                     orderby point.X ascending,point.Y ascending 
                     select point;

int[,] sortedTime = new int[5,2];
int index = 0;
foreach (var testPoint in sorted)
{
  Point aPoint = (Point) testPoint;
  sortedTime.SetValue(aPoint.X,index,0);
  sortedTime.SetValue(aPoint.Y,1);

  index++;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读