我正在编写一个查询,我想计算按日期联系我们的呼叫中心的次数。看起来很简单,但由于联系日期字段是日期时间字段,我得到时间,所以当我按联系日期(时间)分组时,每个联系日期实例的计数都为'1'。所以,我想在没有时间的情况下按日期分组。下面是我用来查询数据库的表达式:
MyDataContext db = new MyDataContext();
var items = (from h in db.ContactHistories
group h by h.contact_dt into g
orderby g.Key
select new
{
contact_dt = g.Key,
item_count = g.Count()
}).Take(50);
我试过用
h.contact_dt.ToShortDateString()
但是这不起作用,因为SQL确实知道ToShortDateString()。非常感谢任何想法。
谢谢!
编辑:
.Take(50)用于限制我获得的记录数量,直到我添加日期选择器和where子句,因此我没有获得所有400K记录。 ;)
答案 0 :(得分:14)
使用Date
属性:
group h by h.contact_dt.Date into g
LINQ to SQL了解这一点 - 请参阅“{3”}“理解”的方法和属性。
编辑:好的,所以直接分组不起作用......我们试着给它一点帮助:var items = (from h in db.ContactHistories
select h.Date into date
group date by date into g
orderby g.Key
select new
{
contact_dt = g.Key,
item_count = g.Count()
}).Take(50);
我不知道它是否有用,但值得一试......
答案 1 :(得分:4)
使用DateTime对象的.Date
属性。