EF

2013-07-11 33 views
9

Problem ile LINQ 2 DateTime Değişkenler Sadece tarihi Part karşılaştırın: Kullanıcıların kayıt tarihi 2 tarihleri ​​(aa/gg/yyyy)EF

Tüm arasına düşer şey aramak için izin veren bir arama formu var kayıtlar ve nesneler, Datetime türündendir, ancak karşılaştırmam gereken tek şey, tarih bölümleri değil, tarih bölümleridir.

MSDN göre, tarihi özelliği LINQ desteklenir beni lambda kısmına .Date eklemek izin vermez yazıldığı gibi ancak bu açıklama:

Hata:

The specified type member 'Date' is not supported in LINQ to Entities. Only initializers, entity members, and entity navigation properties are supported. 

Örnek :

x.DateCreated.Date 

Bu sorun çok çıkageldi eminim - Ho w bunu çözermiyim

ben ped İşte ifadesi < = bölüm

için 23:59:59 = 86399 saniye ekleyerek diğer tarih olabilir sanırım.) (

EntityFunctions.TruncateTime(x.DateCreated) 
+1

'x.DateCreated.Date''ü denediğinizde hangi hata iletisini alırsınız? – Treb

+0

Ve "DateCreated" ne tür? –

+0

DateCreated sadece bir DateTime türüdür – Slinky

cevap

14

için TruncateTime fonksiyonu kullanmak gerekir (db bir bağlam nesnesi) Varlık Çerçeve sürüm 6'da.

10 olan tarih timepart görmezden büyüktür FROMTarih olan tüm öğeleri almak için.

Teşekkürler @gor.

+6

hata mesajını içeren 'DbFunctions.TruncateTime' ile değiştirildi – gor

1

I DbFunctions.TruncateTime kullanmalıdır

DateTime startDate = new DateTime(df.Year, df.Month, df.Day, 0,0,0); 
DateTime endDate = new DateTime(df.Year, df.Month, df.Day, 23,59,59); 

model.Contacts = 
       db.Prospects.Where(x => x.DateCreated >= startDate && x.DateCreated <= endDate) 
        .OrderByDescending(x => x.DateCreated) 
        .Take(100) 
        .ToList(); 
4

aşağıdaki solüsyonu kullanın:

model.Contacts = 
       db.Prospects.Where(x => x.DateCreated >= df.Date && x.DateCreated <= dt.Date) 
        .OrderByDescending(x => x.DateCreated) 
        .Take(100) 
        .ToList();