繁体   English   中英

仅按Linq2DB中的日期分组

[英]Grouping by just the date in Linq2DB

我正在尝试在C#中使用Linq2Db生成一个SQL查询。 我要生成的查询是这样的:

SELECT
   cast([t1].[StartTime] as date) as [StartTime1],
   Count(*) as [WebpageVisits],
   Sum([t1].[PageCount]) as [SumOfViewsOfPages]
          FROM
                 [myserver].[dbo].[TrackData] [t1]
   GROUP BY cast([t1].[StartTime] as date)

我要使用的Linq代码是这样的:

var query = from table in dataContext.TrackData(tablePath)
                        group table by new { table.StartTime.Date } into grp
                        select new { day = grp.Key.Date, numVisitors = grp.Count(), totalPageViews = grp.Sum(table2 => table2.PageCount)};

返回的查询是

    --  SqlServer.2008
SELECT
    [t1].[StartTime],
    Count(*) as [c1],
    Sum([t1].[PageCount]) as [c2]
FROM
    [myserver].[dbo].[TrackData] [t1]
GROUP BY
    Convert(Date, [t1].[StartTime]),
    [t1].[StartTime]

为什么多余的[t1]。[StartTime]出现在这里? 这将导致结果未根据日期分组。 如何生成我要使用Linq生成的SQL查询?

尝试分组删除匿名类型:

group table by table.StartTime.Date into grp

如果要按多个列分组,则应使用匿名类型。 我尝试在LinqPad中进行查询,但无法模拟相同的行为,但这是将来应遵循的原则

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM