Kman
Kman

Reputation: 5001

Linq group by a nullable timestamp (use only date part) and count

I am trying to convert this SQL to linq syntax, but I'm having some difficulties at that.

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

Result
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)}

This last "version" with the DateTime.Parse gives me a runtime error.

How to handle that the q.trans_date is a nullable DateTime and getting my resultset??

Upvotes: 1

Views: 1263

Answers (1)

Jon Skeet
Jon Skeet

Reputation: 1501123

For one thing, you're not getting a runtime error with that code - you'll be getting a compile-time error as your code isn't valid C#.

Try this:

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

Upvotes: 3

Related Questions