2012-04-03 14 views
8

DateTime? .Value.TimeOfDay kullanarak, Olay arama sağlar. Bu Event nesnesinin DateTime'ın Date özelliği vardır. İstediğim, 2 TimeSpans arasındaki Olayları getirmektir. ASP.NET MVC 3.</p> <p>Ben bir model var üzerinde LINQ ile Sorgu yapmaya çalışıyorum LINQ Query

Şu anda benim kod aşağıdaki gibi görünür:

TimeSpan From = new TimeSpan(8,0,0); 
TimeSpan Until = new TimeSpan(22,0,0); 

var events = 
    from e in db.Events 
    where e.Date.Value.TimeOfDay >= From, 
      e.Date.Value.TimeOfDay <= Until 
    select e; 

bir istisna olduğunu söyleyip, atılır "Belirtilen tip üyesi 'TimeOfDay' LıNQ varlıkları desteklenmez."

Bu soruna bir çözüm bulmuyorum ve tüm gün uğraşıyorum. Lütfen bana yardım et, çok sinirliyim. :(

DÜZENLEME:..

benim kodunda yaptım Neyse sonra e.Date.Value burada "timeofday" yazmayı unuttum

Mecbur olduğum için ben DateTime kullanamıyorum olay tarihine rağmen günün belirli zaman arasında meydana filtre Olaylar.

+1

Örnek kodunuz 'TimeOfDay' bile kullanmıyor - Aslında 'Tarih' yerine (kodunuza göre) gerçekte var mı? –

+1

Neden olayları filtrelemek için iki DateTime nesnesi yerine iki TimeSpan nesnesi kullanıyorsunuz? – Steven

cevap

13

Date and Time Canonical Functions for LINQ-to-Entities kullanın. Özellikle, gerekirse

CreateTime(hour, minute, second) 

bakmak Kanonik bir işlevi çağırmaya yardım etmek için How To: Call Canonical Functions'a bakın.

+0

Bu yolda görünüyor, Cannonical Functions hakkında bilmiyordum. Teşekkürler! Ancak, bunları kullanarak DateTime Saatine nasıl dönüştürebilirim? – Umagon

+0

@Umagon: "datetime.Hour", datetime.Minute "ve" datetime.Second "öğelerini kullanın. – jason

+1

Aman Tanrım! Bu benim problemimi çözdü! Sanırım seni seviyorum LOL. Çok teşekkür ederim! : D – Umagon