首页 新闻 搜索 专区 学院

sql group by 用linq 怎么写

0
悬赏园豆:60 [已解决问题] 解决于 2014-04-12 17:11

 

select * from changelogs where id in( select max(ID) from changelogs group by changeID,changetype)

 


linq怎么写

 

 

hey,的主页 hey, | 初学一级 | 园豆:48
提问于:2014-04-09 17:06
< >
分享
最佳答案
0

// 第一种
var ids1 = logs.GroupBy(e => new { ChangeID = e.ChangeID, ChangeType = e.ChangeType })
.Select(e => e.Max(data => data.ID));

var filterLogs1 = logs.Where(e => ids1.Contains(e.ID));

// 第二种
var ids2 = from log1 in logs
group log1 by new { ChangeID = log1.ChangeID, ChangeType = log1.ChangeType } into g
select g.Max(p => p.ID);

var filterLog2 = from log in logs
where (ids2.Contains(log.ID))
select log;

收获园豆:60
Harry Jiang | 菜鸟二级 |园豆:262 | 2014-04-10 10:37
其他回答(4)
0

from c in changelogs group p by c.ID into g select g   

基本的语法是这样的 因为没开VS 所以只能写个大概 下面有具体的语法 

http://www.cnblogs.com/qiuweiguo/archive/2011/06/08/2074949.html

Zery | 园豆:6139 (大侠五级) | 2014-04-09 23:23

能不能帮忙写一下,这些文章我都看过了,但是怎么也写不出想要的结果

支持(0) 反对(0) hey, | 园豆:48 (初学一级) | 2014-04-10 09:26

呵呵.原来大家都被耍了,你面试的时候也这么说?

数据库查询根本在于sql,实体框架在围绕sql转,何必这么绕

支持(0) 反对(0) 【秦时明月】 | 园豆:851 (小虾三级) | 2014-04-10 10:00
0

select * from changelogs where id in( select max(ID) from changelogs group by changeID,changetype)

这条语句注定比你的linq高了很多.原本linq就一个鸡肋

【秦时明月】 | 园豆:851 (小虾三级) | 2014-04-10 10:01

SELECT MAX([t0].[ID]) AS [ID]
FROM [dbo].[ChangeLogs] AS [t0]
GROUP BY [t0].[ChangeID], [t0].[ChangeType]
-- Context: SqlProvider(Sql2005) Model: AttributedMetaModel Build: 4.0.30319.33440

 

 

这是linq生成的sql语句,鸡肋吗?

支持(0) 反对(0) hey, | 园豆:48 (初学一级) | 2014-04-10 10:16

SELECT [t0].[ID], [t0].[ChangeID], [t0].[ChangeType], [t0].[ChangeMethod], [t0].[CreateDate]
FROM [dbo].[ChangeLogs] AS [t0]
WHERE EXISTS(
SELECT NULL AS [EMPTY]
FROM (
SELECT MAX([t1].[ID]) AS [value]
FROM [dbo].[ChangeLogs] AS [t1]
GROUP BY [t1].[ChangeMethod], [t1].[ChangeType]
) AS [t2]
WHERE [t2].[value] = [t0].[ID]
)

 

这是整句的

支持(0) 反对(0) hey, | 园豆:48 (初学一级) | 2014-04-10 10:20

@枫叶染深秋: 用ADO.NET和它比较一下就知道了,用了多久生成。
其次,在复杂一点你试试

支持(0) 反对(0) 【秦时明月】 | 园豆:851 (小虾三级) | 2014-04-10 15:15
0

已经解决changelogs.GroupBy(l => new { l.changeID, l.changetype }).Select(k => new { ID = k.Max(m => m.id) })

hey, | 园豆:48 (初学一级) | 2014-04-10 10:13
0

你可以下载LinqPad自己试试生成的标准语句是怎么样的

Halower | 园豆:1723 (小虾三级) | 2014-04-10 19:13
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册