2014-10-31 14 views
18

Lottando con un codice molto semplice che non funziona laddove un codice simile funziona in altre classi. Non verrà compilato se rimuovo GetValueOrDefault(). Inoltre sto usando System.Linq. Ricevo questo errore di runtime: LINQ to Entities non riconosce il metodo 'System.DateTime GetValueOrDefault()'. Qualche idea?LINQ to Entities non riconosce il metodo '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

Questo non è davvero un duplicato ... Questa domanda è su come risolvere il problema che la questione legata solo discute . La moderazione eccessiva è ciò che non mi fa fare domande su SO. – thepaulpage

+1

La risposta di seguito mi ha aiutato. Le risposte alla domanda per cui questo è presumibilmente un duplicato non mi hanno aiutato affatto. ToString() non è uguale a GetValueOrDefault(). I concetti possono essere simili ma le soluzioni non sono intercambiabili. Pertanto, questo non è affatto un duplicato. –

risposta

35

Si dovrebbe essere in grado di utilizzare l'operatore di 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; intelligente. LINQ to Entities consente gli operatori. – BradleyDotNET

+0

Incredibile, mi ha risparmiato un sacco di tempo! – user2780436

Problemi correlati