Ejemplo n.º 1
0
        public static System.Collections.Generic.IEnumerable <T> Sort <T>(this System.Collections.Generic.IEnumerable <T> source, string sortDirection, string sortKey)
        {
            sortKey = sortKey.ToUpper();
            Func <T, string> keySelector = delegate(T item)
            {
                System.Collections.Generic.IDictionary <string, object> dictionary;
                if (item is System.Collections.Generic.IDictionary <string, object> )
                {
                    dictionary = (item as System.Collections.Generic.IDictionary <string, object>);
                }
                else
                {
                    dictionary = item.toStrObjDict();
                }
                string result;
                if (dictionary.ContainsKey(sortKey))
                {
                    result = Utils.GetString(dictionary[sortKey]);
                }
                else
                {
                    result = string.Empty;
                }
                return(result);
            };

            return(source.Sort(sortDirection, keySelector, delegate(string a, string b)
            {
                int result;
                if (a.IsDateTime() && b.IsDateTime())
                {
                    result = System.Convert.ToDateTime(a).CompareTo(System.Convert.ToDateTime(b));
                }
                else
                {
                    if (a.IsNumeric() && b.IsNumeric())
                    {
                        result = System.Convert.ToInt32(a).CompareTo(System.Convert.ToInt32(b));
                    }
                    else
                    {
                        result = a.CompareTo(b);
                    }
                }
                return result;
            }));
        }