为sql中的聚合不同计数写一个类似的LINQ查询?

Vis*_*hal 6 c# t-sql linq linq-to-entities comparable

我想得到每个月的计数,但即使有多次出现,计数也应该每天最多只有一次.我有正确的SQL查询,但无法将其转换为LINQ -

select 
    count(DISTINCT DAY(date)) as Monthly_Count,
    MONTH(date) as Month,
    YEAR(date)
from 
    activity
where 
    id=@id
group by
    YEAR(date),
    MONTH(date) 
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我翻译上面的查询到LINQ.谢谢!

use*_*116 8

使用GROUP BY和COUNT(DISTINCT)的LINQ to SQL通过@Rick给出的,这应该工作:

var query = from act in db.Activity
            where act.Id == id
            group act by new { act.Date.Year, act.Date.Month } into g
            select new
            {
                MonthlyCount = g.Select(act => act.Date.Day).Distinct().Count(),
                Month = g.Key.Month,
                Year = g.Key.Year
            };
Run Code Online (Sandbox Code Playgroud)

我不知道L2S能否g.Select(act => act.Date.Day).Distinct.Count()正确转换内部.