2014-10-31 20 views
18

Kämpfen mit sehr einfachen Code, der nicht funktioniert, wo ähnlicher Code in anderen Klassen funktioniert. Es wird nicht kompiliert, wenn ich GetValueOrDefault() entferne. Auch ich benutze System.Linq. Ich bekomme diesen Laufzeitfehler: LINQ to Entities erkennt die Methode 'System.DateTime GetValueOrDefault()' nicht. Irgendwelche Ideen?LINQ to Entities erkennt die Methode 'System.DateTime GetValueOrDefault()' nicht

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

Dies ist nicht wirklich ein Duplikat ... Diese Frage ist, wie um das Problem zu umgehen, dass die verknüpfte Frage diskutiert nur . Übereifrige Moderation lässt mich keine Fragen zu SO stellen. – thepaulpage

+1

Die Antwort unten half mir. Die Antworten auf die Frage, für die dies angeblich ein Duplikat ist, haben mir überhaupt nicht geholfen. ToString() ist nicht dasselbe wie GetValueOrDefault(). Die Konzepte können ähnlich sein, aber die Lösungen sind nicht austauschbar. Daher ist dies nicht wirklich ein Duplikat überhaupt. –

Antwort

35

Sie sollten in der Lage sein, den Null Coalescing Operator verwenden ??:

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; klug. LINQ to Entities erlaubt Operatoren. – BradleyDotNET

+0

Erstaunlich, das hat mir eine Menge Zeit gespart! – user2780436

Verwandte Themen