/// <summary> /// 对 DX GridView 的扩展:为传入的 Q 加载 OrderBy ThenBy OrderDescendingBy ... /// </summary> /// <typeparam name="T"></typeparam> /// <param name="gv"></param> /// <param name="q"></param> /// <returns></returns> public static IQueryable <T> ApplySorts <T>(this ASPxGridView gv, IQueryable <T> q, bool processGroup = false, bool groupAsc = true) { var columns = gv.GetSortedColumns(); var gColumns = gv.GetGroupedColumns(); List <KeyValuePair <string, bool> > sorts = new List <KeyValuePair <string, bool> >(); foreach (var c in columns.OrderBy(cc => cc.SortIndex)) { var asc = true; if (c.SortOrder == DevExpress.Data.ColumnSortOrder.Descending) { asc = false; } var gC = gColumns.SingleOrDefault(cc => cc.FieldName == c.FieldName); if (processGroup) { if (gC != null) { asc = groupAsc; } } else { if (gC != null) { continue; } } sorts.Add(new KeyValuePair <string, bool>(c.FieldName, asc)); } return(Exp.AppendSorts <T>(q, sorts.ToArray())); }