2010-09-14 18 views
7

Çağrımızın çağrı tarihlerine göre kaç kez temasa geçtiğini sorgulamak istediğim bir sorgu yazıyorum. Yeterince kolay görünüyor, ancak iletişim tarihi alanı bir datetime alanı olduğundan, zaman alacağım, bu yüzden kişi tarihine göre (zaman) gruplandığında, her iletişim tarihi örneğinin bir '1' sayısı vardır. Yani, zaman olmadan sadece tarihle gruplamak istiyorum. Aşağıda ben veritabanını sorgulamak için kullanın ifadesidir:Bir LINQ sorgusunda zaman olmadan geri dönüş tarihleri ​​

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

denedim

 h.contact_dt.ToShortDateString() 

kullanmak Fakat SQL ToShortDateString nereden biliyor beri bu işe yaramazsa(). Herhangi bir düşünce büyük beğeni topluyor.

Teşekkürler!

DÜZENLEME: Ben hüküm yüzden tüm 400K kayıtları alamadım tarih toplayıcı ve bir ekleme kadar

sökünüz (50) alıyorum kayıt sayısını sınırlamak amacıyla getirilmiştir. ;)

cevap

14

Kullanım Date özelliği: to SQL

group h by h.contact_dt.Date into g 

LINQ bu konuda bilir - yöntemleri ve özellikleri "anlaşılan" nin this handy page bakın.

DÜZENLEME: biz biraz yardım vermeye çalışacağım hakkında Tamam, bunu doğrudan gruplama nasıl ... çalışmaz:

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

bu ödeme şekli eğer bilmiyorum, ama bu denemeye değer ...

+0

@Jon Skeet, bir DateTime (SQL) için varsayılan tür bir DateTime (.NET) – msarchet

+3

Tümünün listesi için http://msdn.microsoft.com/en-us/library/bb882657.aspx adresine bakın. LINQ to SQL –

+0

@Hightechrider için desteklenen DateTime yöntemleri: Bu harika, teşekkürler. Daha önce bilmiyordum. Bağlantıyı tanıtmak için düzenleyecek ... –

4

DateTime nesnesinin .Date özelliğini kullanın.

İlgili konular