Возврат даты без времени в запросе LINQ - PullRequest
7 голосов
/ 14 сентября 2010

Я пишу запрос, в котором хочу подсчитать, сколько раз наш контактный центр связывался по дате.Кажется достаточно простым, но, поскольку поле даты контакта является полем даты и времени, я получаю время, поэтому, когда я группирую по дате (времени) контакта, каждый экземпляр даты контакта имеет счетчик «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) используется для ограничения количества записей, которые я получаю, пока я не добавлю датусборщики и пункт, где я не получаю все записи 400K.;)

Ответы [ 2 ]

14 голосов
/ 14 сентября 2010

Используйте свойство Date:

group h by h.contact_dt.Date into g

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);

Я не знаю, сработает ли это, но стоит попробовать ...

4 голосов
/ 14 сентября 2010

Используйте свойство .Date объекта DateTime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...