C# LINQ按降序选择日期时间字段中前n个不同的日期

C# LINQ按降序选择日期时间字段中前n个不同的日期,c#,linq,C#,Linq,如何通过LINQ C中的降序从datetime字段顺序中选择前n个不同的日期。我有如下输入和输出 输入 2020-01-23 09:15:11.953 2020-01-30 09:15:11.613 2020-02-01 09:15:31.427 2020-02-06 10:08:44.530 2020-02-11 09:20:01.707 2020-02-11 10:22:01.707 2020-02-14 09:16:00.977 2020-02-18 09:16:02.227 2020-0

如何通过LINQ C中的降序从datetime字段顺序中选择前n个不同的日期。我有如下输入和输出

输入 2020-01-23 09:15:11.953 2020-01-30 09:15:11.613 2020-02-01 09:15:31.427 2020-02-06 10:08:44.530 2020-02-11 09:20:01.707 2020-02-11 10:22:01.707 2020-02-14 09:16:00.977 2020-02-18 09:16:02.227 2020-02-18 11:26:02.227 2020-02-18 09:16:02.227 2020-03-04 12:33:17.257 2020-03-05 11:20:55.167 2020-03-05 13:28:55.167

前三名下降的输出应给出

2020-03-05 2020-03-04 2020-02-18

您可以按如下方式使用和:

List<DateTime> dates = new List<DateTime>()
{
    DateTime.Parse("2020-01-23 09:15:11.953"),
     DateTime.Parse("2020-01-30 09:15:11.613"),
     DateTime.Parse("2020-02-01 09:15:31.427"),
     DateTime.Parse("2020-02-06 10:08:44.530"),
     DateTime.Parse("2020-02-11 09:20:01.707"),
     DateTime.Parse("2020-02-11 10:22:01.707"),
     DateTime.Parse("2020-02-14 09:16:00.977"),
     DateTime.Parse("2020-02-18 09:16:02.227"),
     DateTime.Parse("2020-02-18 11:26:02.227"),
     DateTime.Parse("2020-02-18 09:16:02.227"),
     DateTime.Parse("2020-03-04 12:33:17.257"),
     DateTime.Parse("2020-03-05 11:20:55.167"),
     DateTime.Parse("2020-03-05 13:28:55.167")
};

var result = dates.OrderByDescending(o => o).GroupBy(g => g.Date).Distinct().Take(3).Select(s => s.Key).ToList();

不客气,请单击复选标记将答案标记为已接受。为了使其适用于我的场景,只需对代码进行少量添加即可使其适用于数据库字段。可能对某人有帮助。以下是完整的代码列表TradesSorted=ctx.StockTrade.Selectp=>p.BuyTime.ToList.OrderByDenseIngo=>o.GroupByg=>g、 Date.Distinct.Take3.Selects=>s.Key.ToList;