2009-11-20 14 views
5

Doğrudan bir LINQ-Varlıklar sorgu ifadesinden biçimlendirilmiş bir tarih dizesi almaya çalışıyorum. . 'System.Object' sadece varlık veri modeli ilkel türleri döküm destekler LıNQ varlıkları yazın türü 'System.Nullable`1' cast "açılamıyor:Linq-to-tüzel Kişiler: Sorgu seçme deyiminde biçimlendirme tarihi

nonBusinessDays = (from ac in db.AdminCalendar 
        where ac.DateTimeValue >= calendarStartDate && ac.DateTimeValue <= calendarEndDate && ac.IsBusinessDay == false 
        select ac.MonthValue + "/" + ac.DayOfMonth + "/" + ac.FullYear).ToList(); 

Ama folloinw hata mesajı alabilirsiniz. "

Sonuç kümesinde yinelemenin yanı sıra bunu yapmak için herhangi bir yolu var mı? Teşekkürler! Abe

cevap

9

Bir geçici çözüm bulundu:

nonBusinessDays = (from dt in 
          (from ac in db.AdminCalendar 
          where ac.DateTimeValue >= calendarStartDate && ac.DateTimeValue <= calendarEndDate && ac.IsBusinessDay == false 
          select ac.DateTimeValue).ToList() 
        select string.Format("{0:M/d/yyyy}", dt)).ToList(); 
+1

yaşadığınız sorun onun yürütmek için geçerli SQL içine ToString tercüme edilmeye çalışıldığı olmasıdır sunucuda - ve daha sonra yapamadığı. İç içe geçmiş sorgular, sorgulama yapamayan .ToString'i ayırabileceğiniz ve dolayısıyla çalıştığı anlamına gelir – Murph

+1

Teşekkürler! Şimdi anlamlıdır; LINQ işlevi, mevcut olmayan bir SQL işlevine eşlemeye çalışıyor. Çözümüm önce verileri bir listeye almak ve listeyi oradan işlemekti. – Abe

+0

Tembel yükleme suçludur. –

0

ToString kullanmak için seçme değiştirmeyi deneyin:

nonBusinessDays = (from ac in db.AdminCalendar 
        where ac.DateTimeValue >= calendarStartDate && ac.DateTimeValue <= calendarEndDate && ac.IsBusinessDay == false 
        select ac.DateTimeValue.ToString("MM/dd/yyyy")).ToList(); 
+0

Ne yazık ki, ToString yöntemini çalıştıramazsınız; İşte vardığım istisna: LINQ - Varlıklar, "System.String ToString (System.String)" yöntemini tanımıyor ve bu yöntem bir mağaza ifadesine dönüştürülemiyor. – Abe