求一条SQL语句的排序用lamda怎么写?

ft1507999 2020-03-11 04:16:06
[size=18px]求解,下面语句的排序怎么用lamda实现?

SELECT * FROM [TFunds] 
ORDER BY CASE WHEN FilingDeadline >= GetDate() THEN 0 ELSE 1 END,IsRecommend Desc,ABS(DATEDIFF(hh, GETDATE(), FilingDeadline)),PublishTime desc
...全文
379 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
threenewbee 2020-03-11
  • 打赏
  • 举报
回复
orderbydescending(x => FilingDeadline >= DateTime.Now ? 0 : 1).Thenbydescending(x => x.IsRecommend).thenby(x => abs(FilingDeadline.Hour - DateTime.Now.Hour)).thenbydescending(x => x.PublishTime)
极客诗人 2020-03-11
  • 打赏
  • 举报
回复
linq倒是可以这样

static void Main(string[] args)
        {           
            List<TList> list = new List<TList>() {
                new TList(){ Id=2,Name="a1",AddTime=DateTime.Now },
                new TList(){ Id=1,Name="a2",AddTime=DateTime.Now.AddDays(1) },
                new TList(){ Id=3,Name="a3",AddTime=DateTime.Now.AddDays(2) },
                new TList(){ Id=5,Name="a4",AddTime=DateTime.Now.AddDays(3) },
                new TList(){ Id=4,Name="a5",AddTime=DateTime.Now.AddDays(4) },
                new TList(){ Id=6,Name="a6",AddTime=DateTime.Now.AddDays(5)},
                new TList(){ Id=7,Name="a7",AddTime=DateTime.Now.AddDays(6) },
            };
            List<TList> _list = list.OrderBy(x => x.Id > 4 ? 0 : 1).ThenByDescending(x => x.AddTime).ThenByDescending(x => Math.Abs((DateTime.Now.Subtract(x.AddTime).TotalHours))).ToList();


        }
        public class TList
        {
            public int Id { get; set; }
            public string Name { get; set; }
            public DateTime AddTime { get; set; }
        }

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧