2010-09-14 21 views
7

Tôi đang viết truy vấn nơi tôi muốn đếm số lần trung tâm cuộc gọi của chúng tôi được liên hệ theo ngày. Có vẻ dễ dàng, nhưng vì trường ngày liên lạc là trường ngày giờ tôi nhận được thời gian, vì vậy khi tôi nhóm theo ngày liên hệ (thời gian), mỗi trường hợp ngày liên hệ có số '1'. Vì vậy, tôi muốn nhóm theo ngày tháng mà không có thời gian. Dưới đây là biểu hiện tôi sử dụng để truy vấn cơ sở dữ liệu:Trả lại ngày không có thời gian trong truy vấn LINQ

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

Tôi đã cố gắng sử dụng

 h.contact_dt.ToShortDateString() 

Nhưng điều đó không làm việc kể từ SQL không biết về ToShortDateString(). Ý kiến ​​nào cũng được hoan nghênh.

Cảm ơn!

EDIT:

Các .Take (50) được đặt ra để hạn chế số lượng hồ sơ tôi nhận được cho đến khi tôi thêm hái chà là và một mệnh đề where vì vậy tôi không có được tất cả 400K hồ sơ. ;)

Trả lời

14

Sử dụng Date tài sản:

group h by h.contact_dt.Date into g 

LINQ to SQL biết về điều đó - xem this handy page của "hiểu" phương pháp và tài sản.

EDIT: Được rồi, vì vậy nhóm trực tiếp không hoạt động ... làm thế nào về chúng tôi cố gắng cung cấp cho nó một chút giúp đỡ:

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

Tôi không biết nếu nó sẽ làm việc, nhưng nó đáng để thử ...

+0

@Jon Skeet, kiểu mặc định cho một DateTime (SQL) là một DateTime (.NET) – msarchet

+3

Xem http://msdn.microsoft.com/en-us/library/bb882657.aspx để biết danh sách tất cả phương thức DateTime được hỗ trợ cho LINQ to SQL –

+0

@Hightechrider: Thật tuyệt vời, cảm ơn. Không biết về nó trước đây. Sẽ chỉnh sửa để quảng bá liên kết ... –

4

Sử dụng thuộc tính .Date của đối tượng DateTime.

Các vấn đề liên quan