将SQL转换为Linq - Where,Group By和Having

时间:2012-08-08 22:57:17

标签: sql linq group-by having

Linq中针对此SQL查询的正确语法让我望而却步。我对此表示感谢。

SQL:

SELECT TOP 1 posdate 
FROM   dailypos 
GROUP  BY posdate 
HAVING Count(DISTINCT customernumber) = 3 
ORDER  BY posdate DESC) 

基本上,我从3个不同的客户那里获取文件,我需要一个快速的方法来确定我拥有来自所有3的数据的最新日期。我对不同的方法持开放态度,但这个SQL适用于我需要的东西

我可以做小组,但我不知道如何处理第4行(HAVING Count(Distinct ...))

提前致谢。

1 个答案:

答案 0 :(得分:2)

尝试这样的事情:

var result = context.dailypos
    .GroupBy(x => x.posdate)
    .Where(g => g.Select(x => x.customernumber).Distinct().Count() == 3)
    .Select(g => g.Key)
    .OrderByDescending(x => x)
    .Take(1);