C# Сортировка зубчатого массива объектов
Используя 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();
}
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);
}
}
}