gpt4 book ai didi

c# - 使用第一个/最早日期返回多个记录

转载 作者:太空宇宙 更新时间:2023-11-03 19:42:31 25 4
gpt4 key购买 nike

这是一个简单的概念,但 LINQ/SQL 解决方案让我感到难过!

在下面的示例数据中,对于每个 ID,我需要检索一个 ISRC,为每个 ID 取最早的一个。

数据按 ID/ReleaseDate/ISRC 排序,因此我可以读取每个 ID 的第一个/顶部记录。即 ID 1 = GBMNA1600001,ID 2 = GBMNA1600002,ID 3 = GBMNA1600003,ID 20 = GBMNA1680058.. .

ID  ProductID   ISRC    ReleaseDate
1 16 GBMNA1600001 2016-03-27 00:00:00.0000000
1 26 GBMNA1680038 2016-04-24 00:00:00.0000000
1 32 GBMNA1680057 2016-05-01 00:00:00.0000000
1 132 GBMNA1680482 2016-11-13 00:00:00.0000000
1 223 GBMNA1781107 2017-03-26 00:00:00.0000000
2 5 GBMNA1600002 2016-02-14 00:00:00.0000000
2 32 GBMNA1680049 2016-05-01 00:00:00.0000000
3 13 GBMNA1600003 2016-03-13 00:00:00.0000000
3 38 GBMNA1680095 2016-05-29 00:00:00.0000000
3 485 GBMNA1880099 2018-06-26 00:00:00.0000000
20 32 GBMNA1680058 2016-05-01 00:00:00.0000000
20 39 GBMNA1680084 2016-05-29 00:00:00.0000000
20 116 GBMNA1680399 2016-10-30 00:00:00.0000000
20 281 GBMNA1780886 2017-06-05 00:00:00.0000000
20 360 GBMNA1600028 2018-01-08 00:00:00.0000000

但我不知道从哪里开始使用 LINQ 语法,甚至不知道它应该创建的 SQL。

我在 EF 中使用 ASP.NET Core 2.0,代码是 C#,数据库是 SQL Server 2016。

它在我使用 dbcontext 引用的表中,所以我从

var earliestISRCS = from i in _context.allISRCS
select i;

我试过使用 MIN() 作为日期,或者对数据进行排序并使用 .FirstOrDefault()Take(1) 但只能设法取回一条记录。

我需要返回一组数据 - 每个 ID 最早的 ISRC

如果同一日期恰好有多个 ISRC,则 ISRCS 的排序顺序将另外用于确定第一个。

最佳答案

您可以使用 GroupByMin方法。像这样:

var result = from d in _context.allISRCS
group d by d.ID into grouped
let min = grouped.Min(d => d.ReleaseDate)
select new {
ID = grouped.Key,
_context.allISRCS.FirstOrDefault(c => c.ReleaseDate == min)?.ISRC
};

关于c# - 使用第一个/最早日期返回多个记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51112854/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com