Пример #1
0
 /// <summary>
 /// 取得要引用的排序選項
 /// </summary>
 /// <param name="AOptionName">排序選項名稱</param>
 /// <returns>排序欄位內容</returns>
 public virtual string getOptionOrderBy(string AOptionName)
 {
     if (OrderByDictionary.ContainsKey(AOptionName))
     {
         return((string)OrderByDictionary[AOptionName]);
     }
     else
     {
         return("");
     }
 }
Пример #2
0
        /// <summary>
        /// 排序
        /// </summary>
        /// <param name="list"></param>
        /// <param name="orderByTypes"></param>
        /// <param name="orderByUnqueField"></param>
        /// <returns></returns>
        public static List <DataRow> OrderByDataRow(this IEnumerable <DataRow> list, List <OrderByDictionary> orderByTypes, OrderByDictionary orderByUnqueField)
        {
            orderByTypes.Add(orderByUnqueField);
            var dt          = list.AsEnumerable().CopyToDataTable();
            var guidType    = typeof(Guid);
            var sqlGuidType = typeof(SqlGuid);

            System.Data.DataTable dtByConvertGuidToSqlGuid = new System.Data.DataTable();
            foreach (DataColumn it in dt.Columns)
            {
                var isGuid = it.DataType == guidType;
                if (isGuid)
                {
                    dtByConvertGuidToSqlGuid.Columns.Add(it.ColumnName, sqlGuidType);
                }
                else
                {
                    dtByConvertGuidToSqlGuid.Columns.Add(it.ColumnName, it.DataType);
                }
            }
            //将dataTable中guid换转成sqlguid,这样排序才会和SQL一致
            dtByConvertGuidToSqlGuid.Load(dt.CreateDataReader(), System.Data.LoadOption.OverwriteChanges);
            var view = dtByConvertGuidToSqlGuid.AsDataView();

            view.Sort = string.Join(",", orderByTypes.Select(it => string.Format(" {0} {1} ", it.OrderByField, it.IsAsc ? "ASC" : "DESC")));
            var reval = view.ToTable().AsEnumerable().ToList();

            orderByTypes.Remove(orderByUnqueField);
            return(reval);
        }