web-dev-qa-db-ja.com

LINQ to Entitiesはメソッド 'System.DateTime GetValueOrDefault()'を認識しません

他のクラスで同様のコードが機能している場所で機能していない、非常に単純なコードに苦労しています。 GetValueOrDefault()を削除するとコンパイルされません。また、System.Linqを使用しています。このランタイムエラーが発生します。LINQto 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;
    }
_

Entity FrameworkがLINQステートメントでToString()を使用できないのはなぜですか? Linq-to-Entitesが.ToString()メソッドを変換できないという同様の問題について説明していますが、そこで提案されているアプローチ-この方法では、メソッドをまったく使用しないか、Microsoftに修正させることはできませんでした。

30
jfk

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(); 
53
jmoerdyk