【发布时间】:2011-05-10 13:33:27
【问题描述】:
我是 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
所以我正在尝试获取最新的单曲,但每个艺术家只有一首。有人可以帮我吗? :) 也许还有更好的方法来编写查询?
更新:
要回答 cmets 中发布的问题: 我们正在使用 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();
}
【问题讨论】:
-
是用于 SQL-Server 还是其他 DBMS ?
-
你在做什么? LINQ到SQL? LINQ 到对象?请向我们展示您已有的代码。
-
已更新以回答您的问题。
标签: c# .net sql linq nhibernate