2013-08-13 3 views
-1

У меня есть следующие данные, которые были получены от двух textbox. Я хотел бы сортировать его по убыванию по времени. Я пробовал использовать словарь, но я не могу вставить повторяющиеся значения. Есть идеи?Данные по сортировке по убыванию

ID  time        ID  time 
4  10        15  19  
12  13  WANT SORTED BY TIME  12  13 
15  19  ---->>     12  13 
4  10        4   10 
12  13        4   10 
+1

Где данные, поступающие из, прежде чем он попадет в текстовые поля ? Запрос базы данных? Некоторые объекты? – RQDQ

+0

Словарь не может содержать повторяющиеся ключи, поэтому альтернатива называется поиском http://msdn.microsoft.com/en-us/library/bb460184.aspx – phillip

+0

У вас может быть список и реализовать собственный IComparer для простого решения. –

ответ

6

Словари не позволяют дубликаты ключей, так что это не то, что вы хотите здесь, так как ваше значение ID явно не уникальное значение ключа.

Создать класс для хранения данных, а затем использовать OrderByDescending Linq, чтобы отсортировать его:

public class MyTimeData { 
    public int ID { get; set; } 
    public int Time { get; set; } 
} 

var list = new List<MyTimeData>(); 
// Add items to the list 
list = list.OrderByDescending(d => d.Time).ToList(); 
+0

Как добавить мои значения в этот класс из другой формы, я новичок – Apollo

+0

Список tmp = new Список (); tmp.add (новый MyTimeData {Id = 1, Time = DateTime.Now}); – lordkain

+3

@Apollo - Вы должны действительно приложить некоторые усилия, если ваша цель - научиться программировать. – mbeckish

0
yourList.OrderByDescending(x => x.Time); 
+0

Я знаю, как сортировать, если я сортирую один список, он не сортирует другой – Apollo

+0

, когда вы говорите «другой», является ли он частью того же объекта? вы можете связать его, вызвав «.ThenByDescending (x => x.ID)» – Konstantin

0

Другой вариант, если LINQ не доступен или что-то вас интересует, структура SortedList данных (которые вы можете изменить порядок, чтобы сделать его нисходящим, как поднимаются по умолчанию), которые вы можете использовать, как это:

public class MyTimeData { 
    public int ID { get; set; } 
    public int Time { get; set; } 
} 

var list = new SortedList<MyTimeData>(); 

// Add items to sorted list 

// Reverse to make it descending 
var listDescending = list.Reverse(); 

foreach (var item in listDescending) 
{ 
    // Do something with item 
} 
Смежные вопросы