[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
uj5u.com熱心網友回復:
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; }
}
uj5u.com熱心網友回復:
orderbydescending(x => FilingDeadline >= DateTime.Now ? 0 : 1).Thenbydescending(x => x.IsRecommend).thenby(x => abs(FilingDeadline.Hour - DateTime.Now.Hour)).thenbydescending(x => x.PublishTime)轉載請註明出處,本文鏈接:https://www.uj5u.com/net/63511.html
標籤:LINQ
