C# Сортировка зубчатого массива объектов

Используя С#, у меня есть массив 2D Jagged, содержащий объекты, и я хочу отсортировать этот массив Jagged на основе общедоступного свойства в этих объектах. Я создал образец ниже моей проблемы, у меня ограниченный опыт использования 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();
}

person Garry Freeman    schedule 09.04.2017    source источник
comment
Это была моя ошибка, отредактировал   -  person Garry Freeman    schedule 09.04.2017


Ответы (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);
        }
    }
}
person jdweng    schedule 09.04.2017
comment
Спасибо, мне удалось адаптировать IComparable‹MyObject› вместе с методом CompareTo для решения моей проблемы. - person Garry Freeman; 09.04.2017