如何通过排序有效地实现DAL? [英] How to effectively implement DAL with sorting?

查看:73
本文介绍了如何通过排序有效地实现DAL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在上一个项目中,我编写了这样的方法:

At my previous project I have written such a method:

private static IQueryable<vw_gui_User> GetUsersOrderedQuery(IQueryable<vw_gui_User> query, string sortExpression, bool asc)
        {
            switch (sortExpression)
            {
                case "Username":
                    {
                        query = asc ? query.OrderBy(users => users.Username) :
                            query.OrderByDescending(users => users.Username);
                        break;
                    }
                case "email":
                    {
                        query = asc ? query.OrderBy(users => users.email) :
                            query.OrderByDescending(users => users.email);
                        break;
                    }
                case "Total":
                    {
                        query = asc ? query.OrderBy(users => users.Total) :
                            query.OrderByDescending(users => users.Total);
                        break;
                    }
                case "RealBalance":
                    {
                        query = asc ? query.OrderBy(users => users.RealBalance) :
                            query.OrderByDescending(users => users.RealBalance);
                        break;
                    }
                case "BonusMoney":
                    {
                        query = asc ? query.OrderBy(users => users.BonusMoney) :
                            query.OrderByDescending(users => users.BonusMoney);
                        break;
                    }
                case "PartnerProgram":
                    {
                        query = asc ? query.OrderBy(users => users.PartnerProgram) :
                            query.OrderByDescending(users => users.PartnerProgram);
                        break;
                    }
                case null:
                default:
                    sortExpression = null;
                    break;
            }

            if (sortExpression != null)
            {
                var ordered = ((IOrderedQueryable<vw_gui_User>)query);
                query = ordered.ThenBy(users => users.id);
            }
            else
                query = query.OrderBy(users => users.id);
            return query;
        }



在这种情况下该怎么办才能避免使用类属性字符串的许多情况?



What to do in this case to avoid many cases with string of class properties?

public List<Artefact> Select(int StartIndex, int PageSize,
           string SortExpression, bool SortDirection)
       {
           using (ZADataContext db = new ZADataContext())
           {
               ///How to implement this method without cases to process SortExpression?
           }
       }

推荐答案

请检查 [ ^ ]文章.借助反射可以很好地实现排序.
Please check this[^]article. Sorting is implemented nicely with the help of reflection.


这篇关于如何通过排序有效地实现DAL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆