2014-10-31 50 views
18

用非常簡單的代碼掙扎着,這些代碼在其他類中工作的代碼不起作用。如果我刪除GetValueOrDefault(),它將不會編譯。另外我正在使用System.Linq。 我得到這個運行時錯誤:LINQ to Entities無法識別方法'System.DateTime GetValueOrDefault()'。有任何想法嗎?LINQ to Entities無法識別方法'System.DateTime GetValueOrDefault()'

public List<AddressModel> GetAll(string customer_number) 
    {   
     addresses = (from a in db.ADDRESS 
         where a.CUSTOMER_NUMBER.Equals(customer_number) 
         select new AddressModel 
         { 
          Address_Id = a.ADDRESS_ID, 
          System_Id = a.SYSTEM_ID, 
          Customer_Number = a.CUSTOMER_NUMBER, 
          Address_Type = a.ADDRESS_TYPE, 
          Changed_On = a.CHANGED_ON.GetValueOrDefault(DateTime.MinValue), 
          Created_On = a.CREATED_ON.GetValueOrDefault(DateTime.MinValue), 
          Email = a.EMAIL 
         }).ToList(); 

     return addresses; 
    } 
+9

這是不是一個真正的副本...這個問題是關於如何解決該鏈接的問題只是討論問題。過度熱情的節制是讓我不想問SO的問題。 – thepaulpage 2015-05-12 15:03:57

+1

下面的答案幫助了我。對於這個被認爲是重複的問題的答案根本沒有幫助我。 ToString()與GetValueOrDefault()不同。這些概念可能相似,但解決方案不可互換。因此,這根本不是重複的。 – 2015-07-22 15:08:22

回答

35

您應該能夠使用Null Coalescing操作??

addresses = (from a in db.ADDRESS 
      where a.CUSTOMER_NUMBER.Equals(customer_number) 
      select new AddressModel 
      { 
       Address_Id = a.ADDRESS_ID, 
       System_Id = a.SYSTEM_ID, 
       Customer_Number = a.CUSTOMER_NUMBER, 
       Address_Type = a.ADDRESS_TYPE, 
       Changed_On = a.CHANGED_ON ?? DateTime.MinValue, 
       Created_On = a.CREATED_ON ?? DateTime.MinValue, 
       Email = a.EMAIL 
       }).ToList(); 
+0

+1;聰明。 LINQ to Entities確實允許運營商。 – BradleyDotNET 2014-10-31 22:43:27

+0

令人驚歎的是,這節省了我很多時間! – user2780436 2015-01-30 18:33:08

相關問題