gpt4 book ai didi

c# - LINQ加入和分组

转载 作者:太空狗 更新时间:2023-10-29 20:25:30 26 4
gpt4 key购买 nike

我是 LINQ 的新手,我正在尝试将此 SQL 查询转换为其 LINQ 等效项:

select S.*
from Singles S
join (
select max(SingleId) as SingleId
from Single
group by ArtistId) S2 on S2.SingleId = S.SingleId
order by Released desc

表格如下所示:

 -----------
| Singles |
|-----------|
| SingleID |
| ArtistId |
| Released |
| Title |
| ..... |
-----------

等等...并包含例如这些项目:

SingleID   ArtistID    Released    Title
1 1 2011-05-10 Title1
2 1 2011-05-10 Title2
3 2 2011-05-10 Title3
4 3 2011-05-10 Title4
5 4 2011-05-10 Title5
6 2 2011-05-10 Title6
7 3 2011-05-10 Title7
8 5 2011-05-10 Title8
9 6 2011-05-10 Title9

所以我正在尝试获取最新的单曲,但每个艺术家只有一个。谁能帮帮我? :)也许还有更好的方式来编写查询?

更新:

回答评论中的问题:我们使用 Microsoft SQL Server 和 LINQ to NHibernate。

这是我们现在使用的示例,它返回最新的单曲,不按艺术家 ID 分组:

public Single[] GetLatest()
{
IQueryable<Single> q;
q = from s in _sess.Query<Single>()
where s.State == State.Released
orderby s.Released descending
select s;

return q.Take(20).ToArray();
}

最佳答案

这个怎么样:

var firstSingles = Singles.GroupBy(x => x.ArtistId)
.Select(g => g.OrderByDescending(x => x.Released).First())
.ToList();

关于c# - LINQ加入和分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5950884/

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