在LINQ查询中无时间返回日期

And*_*ans 7 c# datetime linq-to-sql

我正在编写一个查询,我想计算我们的呼叫中心按日期联系的次数.看起来很简单,但由于联系日期字段是日期时间字段,我得到时间,所以当我按联系日期(时间)分组时,每个联系日期实例的计数都为'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);
Run Code Online (Sandbox Code Playgroud)

我试过用

     h.contact_dt.ToShortDateString()
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为SQL确实知道ToShortDateString().任何想法都非常感谢.

谢谢!

编辑:

.Take(50)用于限制我获得的记录数量,直到我添加日期选择器和where子句,因此我没有获得所有400K记录.;)

Jon*_*eet 14

使用该Date属性:

group h by h.contact_dt.Date into g
Run Code Online (Sandbox Code Playgroud)

LINQ to SQL了解这一点 - 请参阅这个方便的"理解"方法和属性页面.

编辑:好的,所以直接分组不起作用...我们试着给它一些帮助怎么样:

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);
Run Code Online (Sandbox Code Playgroud)

我不知道它是否有效,但值得一试......

  • 有关LINQ to SQL支持的所有DateTime方法的列表,请参见http://msdn.microsoft.com/en-us/library/bb882657.aspx (3认同)