Linq组由可以为空的时间戳(仅使用日期部分)和计数

时间:2011-11-18 13:31:02

标签: linq entity-framework

我正在尝试将此SQL转换为linq语法,但我遇到了一些困难。

SELECT trans_date, count(*) FROM table1
GROUP BY trans_date

结果
01-01-2001 | 12个
03-01-2001 | 45

var q = from a in table1
let dt = q.trans_date.value
group q by new {y = dt.Year.ToString(), m = dt.Month.ToString(), d = dt.Day.toString()}
into g
select new { int NumOf = g.Count(), DateTime TransDate = DateTime.Parse(g.Key.y + g.key.m + g.Key.d)}

使用DateTime.Parse的最后一个“版本”给出了运行时错误。

如何处理q.trans_date是一个可以为空的DateTime并获取我的结果集?

1 个答案:

答案 0 :(得分:3)

首先,您没有得到该代码的运行时错误 - 您将收到编译时错误,因为您的代码无效C#。

试试这个:

var q = from a in table1
        group a by a.trans_date.value.Date into g
        select new {
            Count = g.Count(),
            TransDate = g.Key
        };