using System.Collections.Generic;
public class CustomerComparer : IComparer<KeyValuePair<int, Data>>
private List<string> orderedLetters = new List<string>() { "C", "A", "S" };
public int Compare(KeyValuePair<int, Data> str1, KeyValuePair<int, Data> str2)
return orderedLetters.IndexOf(str1.Value.Identity) - orderedLetters.IndexOf(str2.Value.Identity);
public static void Main()
Data value1 = new Data { Name = "Name1", Identity = "S", LastUsed = new DateTime().AddMinutes(1)};
Data value2 = new Data { Name = "Name2", Identity = "A", LastUsed = new DateTime().AddMinutes(2)};
Data value3 = new Data { Name = "Name3", Identity = "C", LastUsed = new DateTime().AddMinutes(3)};
Data value4 = new Data { Name = "Name4", Identity = "C", LastUsed = new DateTime().AddMinutes(4)};
Dictionary<int, Data> unsortedDictionary = new Dictionary<int, Data>();
unsortedDictionary.Add(1, value1);
unsortedDictionary.Add(2, value2);
unsortedDictionary.Add(3, value3);
unsortedDictionary.Add(4, value4);
var customSortedValues = unsortedDictionary.Values.OrderByDescending(item => item.LastUsed).ToArray();
Console.WriteLine(customSortedValues[2].ToString());
Console.WriteLine(customSortedValues.First().ToString());
public string Name { get; set; }
public string Identity { get; set; }
public DateTime LastUsed { get; set; }
public virtual string ToString(){
return $"{this.Name} : {this.Identity} : {this.LastUsed}";