请问一下这个升序和降序能够简化为一个方法吗?动态的识别字段来升序降序

不用判断,使用其他的方法或者思路
问题相关代码,请勿粘贴截图
//升序
            if (arr == "Asc")
            {
                var data = (from n in db.New
                            join u in db.User on n.UserId equals u.Id into t1
                            from join_u in t1.DefaultIfEmpty()
                            select new New
                            {
                                Id = n.Id,
                                Title = n.Title ?? null,
                                Describe = n.Describe ?? null,
                                Content = n.Content ?? null,
                                IsDelete = n.IsDelete ?? null,
                                InputTime = n.InputTime ?? null,    
                                UpdateTime = n.UpdateTime ?? null,
                                UserId = n.UserId,
                                UserName = join_u.Name ?? null,
                                UserPwd = join_u.Pwd ?? null,
                                Mob = join_u.Mob ?? null,
                                Email = join_u.Email ?? null
                            });  
                //.Where(u => u.UserId == userid || u.UserId == null && u.IsDelete == "0" &&  EF.Functions.Like(u.Title,"%"+title+"%")).OrderBy<New, TKey>(expression).Skip((pageIndex - 1) * PageSize).Take(PageSize)
                data = (IQueryable<New>)data.Where(u => u.IsDelete == "0" && EF.Functions.Like(u.Title, "%" + title + "%")).OrderBy<New, TKey>(expression).Skip((pageIndex - 1) * PageSize).Take(PageSize).AsEnumerable();
                return data;
            }
            else
            {
                var data = (from n in db.New
                            join u in db.User on n.UserId equals u.Id into t1
                            from join_u in t1.DefaultIfEmpty()
                            select new New
                            {
                                Id = n.Id,
                                Title = n.Title ?? null,
                                Describe = n.Describe ?? null,
                                Content = n.Content ?? null,
                                IsDelete = n.IsDelete ?? null,
                                InputTime = n.InputTime ?? null,
                                UpdateTime = n.UpdateTime ?? null,
                                UserId = join_u.Id,
                                UserName = join_u.Name ?? null,
                                UserPwd = join_u.Pwd ?? null,
                                Mob = join_u.Mob ?? null,
                                Email = join_u.Email ?? null
                            });  
                //.Where(u => u.UserId == userid || u.UserId == null && u.IsDelete == "0" &&  EF.Functions.Like(u.Title,"%"+title+"%")).OrderBy<New, TKey>(expression).Skip((pageIndex - 1) * PageSize).Take(PageSize)
                data = (IQueryable<New>)data.Where(u => u.IsDelete == "0" && EF.Functions.Like(u.Title, "%" + title + "%")).OrderByDescending<New, TKey>(expression).Skip((pageIndex - 1) * PageSize).Take(PageSize).AsEnumerable();
                return data;
            }

运行结果及报错内容
我的解答思路和尝试过的方法
简化为一个方法,不用if else

img

找不同即可。
不同之处在于23,47行的OrderByDescending

所以那一大串可以并成一块,
但是data还是要分