2014-10-31 13 views
18

Walcząc z bardzo prostym kodem, który nie działa, gdy podobny kod działa w innych klasach. Nie skompiluje się, jeśli usuniemy GetValueOrDefault(). Również używam System.Linq. Otrzymuję ten błąd środowiska wykonawczego: LINQ to Entities nie rozpoznaje metody "System.DateTime GetValueOrDefault()". Jakieś pomysły?LINQ to Entities nie rozpoznaje metody "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

nie jest to duplikat ... To pytanie jest o tym, jak obejść ten problem, że kwestia związana właśnie omawia . Nadmierny umiar sprawia, że ​​nie chcę zadawać pytań na temat SO. – thepaulpage

+1

Poniższa odpowiedź pomogła mi. Odpowiedzi na pytanie, które podobno jest duplikatem, w ogóle mi nie pomogły. ToString() to nie to samo co GetValueOrDefault(). Koncepcje mogą być podobne, ale rozwiązania nie są wymienne. Dlatego nie jest to w zasadzie duplikat. –

Odpowiedz

35

powinien być w stanie użyć operatora 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; sprytny. LINQ to Entities pozwala operatorom. – BradleyDotNET

+0

Niesamowite, zaoszczędziło mi to wiele czasu! – user2780436

Powiązane problemy