Итак, у меня есть пользовательский тип Foo
:
public class Foo
{
public string Description {get;set;}
public int Order {get;set;} //not unique - just some integer
public DateTime Date {get;set;}
}
и список, содержащий это Foo
с (посмотрите, что я там делал?):
public class FooTops : List<Foo>
{
public string Description {get; set;}
public DateTime Date {get; set}
public void AddCustom(Foo foo)
{
if (this.Count == 0)
{
this.Description = foo.Description;
this.Date = foo.Date;
}
else
{
if (foo.Order == 1)
{
this.Date = foo.Date;
}
}
this.Add(foo);
}
}
IТеперь я хочу преобразовать этот список в SortedList
, но этот список не может принять мой пользовательский тип Foo
.
Как мне отсортировать мой список по Foo.Order
?По сути, я хочу, чтобы многие FooTops
, содержащие Foo
, отсортированные по их Foo.Order
.
. Я читал о , используя делегатов для сортировки списков, но они всегда делают это впоследствии а не "на каждый добавленный элемент".Могу ли я потом отсортировать свой список?
Решение: Я только что составил список SortedList<int,Foo>
.TKey это Foo.Order
.Конечно, этот ключ не является уникальным, поэтому перед строкой `this.Add (foo); 'я просто генерирую уникальный ключ:
private in CheckForUniqueOrder(int p)
{
if (this.ContainsKey(p))
{
p = p +1;
p = CheckForUniqueOrder(p); //love recursion...
}
return p;
}