none
如何判斷 null 的問題 ? RRS feed

  • 問題

  •  請問:

    我有一 DataTable 想 ToList(), 所以寫了下面的 code, 但是 Salary 欄位內容是 null,所以執行後會出現

        public class Employee2DTO
        {
            public int Id { get; set; }
            public string FirstName { get; set; }
            public string LastName { get; set; }
            public string MiddleName { get; set; }

            public string Address { get; set; }

            public decimal Salary { get; set; }
            public Nullable<Decimal> Salary2 { get; set; }
            public decimal? Salary3 { get; set; }
            
            public string Email { get; set; }
        }

    無法將 DBNull.Value 轉型為型別 'System.Decimal'。請使用可為 Null 的型別 (Nullable Type)。

     

                  var result=ds.Tables[0].AsEnumerable().Select(r => new Employee2DTO {
                        Id = r.Field<int>("Id"),
                        FirstName=r.Field<string>("FirstName"),
                        LastName=r.Field<string>("LastName"),
                        MiddleName=r.Field<string>("MiddleName"),
                        Address=r.Field<string>("Address"),
                        Salary= r.Field<decimal>("Salary"),
                        Email=r.Field<string>("Email")

                    });

     我想問的是,有沒有可能在賦值的時候,是否能夠檢查該欄位是否為 null,如果是null就給額外的預設值

    試者這樣寫不行  r.Field<decimal>("Salary") ? null : 5.0D ------------------------ x 編譯器會說無法轉換

    我知道可以從資料庫用 isnull 處理掉,但我想在前端程式做處理,請問我可以怎麼做 ?


    my407sw

    2017年1月11日 下午 12:58

解答

  • 本來是想說 你改成這樣就好了

    r.Field<decimal?>("Salary")

    但是你說要預設值 應該這樣就好了

    r.Field<decimal?>("Salary").HasValue ? r.Field<decimal>("Salary") : 0

    2017年1月11日 下午 01:39

所有回覆

  • 本來是想說 你改成這樣就好了

    r.Field<decimal?>("Salary")

    但是你說要預設值 應該這樣就好了

    r.Field<decimal?>("Salary").HasValue ? r.Field<decimal>("Salary") : 0

    2017年1月11日 下午 01:39
  • 哈哈,感謝,一時腦殘原來 <decimal?> 就好

    HasValue 也學會了,感謝

    另外請教在 DTO class 中

    定義這樣的型別 Nullable<decimal> 跟 <decimal?> ,意義上有何不同? 使用上都是用 <decimal?>來接


    my407sw

    2017年1月11日 下午 02:28
  • Nullable<decimal> 和 decimal? 是一樣的. 兩種宣告方式擇一即可, 但用 ? 可以少打很多字

    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。



    2017年1月11日 下午 02:48
    版主
  • Nullable<decimal> = decimal?

    強力監督SQL Injection問題!!

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    2017年1月11日 下午 02:48
    版主
  • 感謝兩位!

    my407sw

    2017年1月11日 下午 04:50