using System; using System.Collections.Generic; using System.Text; namespace Apewer.Internals { internal class SortHelper { #region List public static List ListString(List argList, bool argAscend) { var valid = new List(); var origin = argList; if (origin == null) return valid; if (origin.Count < 2) { if (origin.Count == 1) valid.Add(origin[0]); return valid; } foreach (var item in origin) { if (string.IsNullOrEmpty(item)) continue; var trim = item.Trim(); if (string.IsNullOrEmpty(trim)) continue; valid.Add(trim); } if (argAscend) valid.Sort(new Comparison(ComparisonAscend)); else valid.Sort(new Comparison(ComparisonDescend)); return valid; } public static int ComparisonAscend(string x, string y) { return x.CompareTo(y); } public static int ComparisonDescend(string x, string y) { return y.CompareTo(x); } #endregion #region Dictionary public static Dictionary DictionaryStringString(Dictionary argDictionary, bool argKey, bool argAscend) { var input = argDictionary; var list = new List>(input); if (list.Count > 0) { try { if (argKey) { if (argAscend) list.Sort(new Comparison>(ComparisonAscendKey)); else list.Sort(new Comparison>(ComparisonDescendKey)); } else { if (argAscend) list.Sort(new Comparison>(ComparisonAscendValue)); else list.Sort(new Comparison>(ComparisonDescendValue)); } } catch { list.Clear(); } } var output = new Dictionary(); foreach (var kvp in list) { output.Add(kvp.Key, kvp.Value); } return output; } public static int ComparisonAscendKey(KeyValuePair x, KeyValuePair y) { return x.Key.CompareTo(y.Key); } public static int ComparisonDescendKey(KeyValuePair x, KeyValuePair y) { return y.Key.CompareTo(x.Key); } public static int ComparisonAscendValue(KeyValuePair x, KeyValuePair y) { return x.Value.CompareTo(y.Value); } public static int ComparisonDescendValue(KeyValuePair x, KeyValuePair y) { return y.Value.CompareTo(x.Value); } #endregion #region Dictionary public static Dictionary DictionaryStringDouble(Dictionary argDictionary, bool argKey, bool argAscend) { var input = argDictionary; var list = new List>(input); if (list.Count > 0) { try { if (argKey) { if (argAscend) list.Sort(new Comparison>(ComparisonAscendKey)); else list.Sort(new Comparison>(ComparisonDescendKey)); } else { if (argAscend) list.Sort(new Comparison>(ComparisonAscendValue)); else list.Sort(new Comparison>(ComparisonDescendValue)); } } catch { list.Clear(); } } var output = new Dictionary(); foreach (var kvp in list) { output.Add(kvp.Key, kvp.Value); } return output; } public static int ComparisonAscendKey(KeyValuePair x, KeyValuePair y) { return x.Key.CompareTo(y.Key); } public static int ComparisonDescendKey(KeyValuePair x, KeyValuePair y) { return y.Key.CompareTo(x.Key); } public static int ComparisonAscendValue(KeyValuePair x, KeyValuePair y) { return x.Value.CompareTo(y.Value); } public static int ComparisonDescendValue(KeyValuePair x, KeyValuePair y) { return y.Value.CompareTo(x.Value); } #endregion } }