【问题标题】:C# Sorting a jagged array of objectsC# 对交错的对象数组进行排序
【发布时间】:2017-09-04 12:21:00
【问题描述】:

使用 C#,我有一个包含对象的 2D 锯齿状数组,我想要实现的是根据这些对象中的公共属性对这个锯齿状数组进行排序 我在我的问题下面创建了一个示例, 我使用 LINQ 的经验有限,但我尝试过使用它但失败了,如果需要,我还着手创建交换方法。

欢迎任何见解,谢谢

    //[][] of Objects
    private MyObject[][] jaggedArray = new MyObject[3][]
    {
        new MyObject[5]
        {
            new MyObject(), new MyObject(), new MyObject(), new MyObject(), new MyObject(),
        },
        new MyObject[5]
        {
            new MyObject(), new MyObject(), new MyObject(), new MyObject(), new MyObject(),
        },

        new MyObject[5]
        {
            new MyObject(), new MyObject(), new MyObject(), new MyObject(), new MyObject(),
        },
    };


    static void swap(ref MyObject a, ref MyObject b)
    {
        MyObject temp = a;
        a = b;
        b = temp;
    }

class MyObject
{
    public MyObject()
    { Value = rand.Next(100);    }
    public int Value{ get; set; }

    Random rand = new Random();
}

【问题讨论】:

  • 这是我的错误,已编辑

标签: c# .net sorting multidimensional-array jagged-arrays


【解决方案1】:

下面的代码在一维中排序

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            new Test();
        }
    }
    public class Test
    {
        //[][] of Objects
        private MyObject[][] jaggedArray = new MyObject[3][]
        {
            new MyObject[5]
            {
                new MyObject(), new MyObject(), new MyObject(), new MyObject(), new MyObject(),
            },
            new MyObject[5]
            {
                new MyObject(), new MyObject(), new MyObject(), new MyObject(), new MyObject(),
            },

            new MyObject[5]
            {
                new MyObject(), new MyObject(), new MyObject(), new MyObject(), new MyObject(),
            },
        };

        public Test()
        {
            jaggedArray = jaggedArray.Select(x => x.OrderBy(y => y).ToArray()).ToArray();
        }
    }
    public class MyObject : IComparable<MyObject>
    {
        public MyObject()
        { 
            Value = rand.Next(100);    
        }
        public int Value{ get; set; }

        static Random rand = new Random();

        public int CompareTo(MyObject o)
        {

            return this.Value.CompareTo(o.Value);
        }
    }
}

【讨论】:

  • 谢谢,我能够适应 IComparable 以及 CompareTo 方法来解决我的问题。
猜你喜欢
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2011-08-18
相关资源
最近更新 更多