using System; using System.Collections.Generic; using System.Text; namespace Apewer.Internals { internal class SortHelper { #region List<String> public static List<string> ListString(List<string> argList, bool argAscend) { var valid = new List<string>(); 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<string>(ComparisonAscend)); else valid.Sort(new Comparison<string>(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<String, String> public static Dictionary<string, string> DictionaryStringString(Dictionary<string, string> argDictionary, bool argKey, bool argAscend) { var input = argDictionary; var list = new List<KeyValuePair<string, string>>(input); if (list.Count > 0) { try { if (argKey) { if (argAscend) list.Sort(new Comparison<KeyValuePair<string, string>>(ComparisonAscendKey)); else list.Sort(new Comparison<KeyValuePair<string, string>>(ComparisonDescendKey)); } else { if (argAscend) list.Sort(new Comparison<KeyValuePair<string, string>>(ComparisonAscendValue)); else list.Sort(new Comparison<KeyValuePair<string, string>>(ComparisonDescendValue)); } } catch { list.Clear(); } } var output = new Dictionary<string, string>(); foreach (var kvp in list) { output.Add(kvp.Key, kvp.Value); } return output; } public static int ComparisonAscendKey(KeyValuePair<string, string> x, KeyValuePair<string, string> y) { return x.Key.CompareTo(y.Key); } public static int ComparisonDescendKey(KeyValuePair<string, string> x, KeyValuePair<string, string> y) { return y.Key.CompareTo(x.Key); } public static int ComparisonAscendValue(KeyValuePair<string, string> x, KeyValuePair<string, string> y) { return x.Value.CompareTo(y.Value); } public static int ComparisonDescendValue(KeyValuePair<string, string> x, KeyValuePair<string, string> y) { return y.Value.CompareTo(x.Value); } #endregion #region Dictionary<String, Double> public static Dictionary<string, double> DictionaryStringDouble(Dictionary<string, double> argDictionary, bool argKey, bool argAscend) { var input = argDictionary; var list = new List<KeyValuePair<string, double>>(input); if (list.Count > 0) { try { if (argKey) { if (argAscend) list.Sort(new Comparison<KeyValuePair<string, double>>(ComparisonAscendKey)); else list.Sort(new Comparison<KeyValuePair<string, double>>(ComparisonDescendKey)); } else { if (argAscend) list.Sort(new Comparison<KeyValuePair<string, double>>(ComparisonAscendValue)); else list.Sort(new Comparison<KeyValuePair<string, double>>(ComparisonDescendValue)); } } catch { list.Clear(); } } var output = new Dictionary<string, double>(); foreach (var kvp in list) { output.Add(kvp.Key, kvp.Value); } return output; } public static int ComparisonAscendKey(KeyValuePair<string, double> x, KeyValuePair<string, double> y) { return x.Key.CompareTo(y.Key); } public static int ComparisonDescendKey(KeyValuePair<string, double> x, KeyValuePair<string, double> y) { return y.Key.CompareTo(x.Key); } public static int ComparisonAscendValue(KeyValuePair<string, double> x, KeyValuePair<string, double> y) { return x.Value.CompareTo(y.Value); } public static int ComparisonDescendValue(KeyValuePair<string, double> x, KeyValuePair<string, double> y) { return y.Value.CompareTo(x.Value); } #endregion } }