Моя домашняя работа: я получил общий список в C #, я сортировал его по List.Sort
, когда реализовано CompareTo()
. У меня есть другой список объектов той же структуры, и мне нужно вставить их в мой первый отсортированный список, не добавлять их в конец списка и снова List.Sort
, но вставить сразу в отсортированный и отсортировать список после вставки. Как мне это сделать?
Короче говоря: я не могу использовать SortedList, просто общий список, и я не могу добавить свои элементы в конец MyList1, а затем MyList1.Sort ()
Мои списки выглядят так:
List<MyClass> MyList1 = new List<MyClass>():
List<MyClass> MyList2 = new List<MyClass>()
MyList1.Sort();
И мне нужны элементы из MyList2
, вставленные в MyList1
в том же порядке, в котором они отсортированы.
Мой CompareTo()
метод, он сортирует по двум свойствам:
public int CompareTo(MyClass next)
{
int pos = String.Compare(this.name, next.name, StringComparison.CurrentCulture);
if ((this.price < next.price) || ((this.price== next.price)
&& (pos > 0)))
{
return 1;
}
else
{
return - 1;
}
}
Я понял, как это должно выглядеть, все отлично работает:
static void Inserting(List<MyClass> List1,
List<MyClass> List2)
{
foreach (var item in List2)
{
var i = 0;
while (i < List1.Count && item.CompareTo(List1[i]) > 0)
i++;
List1.Insert(i, item);
}
}