2013-10-30 56 views
0

我想檢查一個字段從SQL返回爲空或沒有,但我不斷收到「無效的初始化函數成員聲明」關於IsDBNull以便無效的初始化函數成員聲明

這裏是我的代碼,這可能是導致此?

while (dr.Read()) 
{ 
    staff.Add(new Staff() 
    { 
     id = dr.GetInt32(dr.GetOrdinal("id")), 
     dr.IsDBNull(dr.GetOrdinal("NAME")) ? null : dr.GetString(dr.GetOrdinal("NAME")), 

     PARENT = dr.GetString(dr.GetOrdinal("PARENT")), 
     VALUE = dr.GetString(dr.GetOrdinal("VALUE")), 
     VALUETYPE = dr.GetString(dr.GetOrdinal("VALUETYPE")) 
    }); 
} 
+0

請查看此主題:http://stackoverflow.com/questions/14405553/linq-error-invalid-initializer-member-declarator – Aidin

+0

你的意思是'名稱= dr.IsDBNull(...' –

回答

0

不確定您可以在初始化成員變量時執行條件語句。你實際上正試圖調用構造函數,它初始化成員變量。

可能最簡單的方法是明確創建對象,然後將其添加到集合中。

Staff staff= new Staff(); 

分配值到對象,在那裏你可以檢查NULL值,然後分配的屬性。否則,將該值作爲dr["Name"]傳遞給構造函數,並處理構造函數中的檢查。

希望這會有所幫助。

1

確保所有屬性都在{}

PropertyName = dr.IsDBNull(dr.GetOrdinal("NAME")) ? null : dr.GetString(dr.GetOrdinal("NAME")),