2016-04-27 60 views
0

所以我想要做的是循環通過數據表的列來獲取它的價值。如何檢查C#中的數據表中列值是否爲空?

例如,這是我的數據表

emp_id  f_name   email   remarks 
1   Jim   [email protected] 
2   Apple  [email protected] 
3   Peter 
4   Amy   [email protected] 

在此數據表,你可以看到,彼得的電子郵件丟失。我想檢索這個記錄,在備註「無電子郵件」中設置一個值。

我該怎麼做?

+0

編輯問題檢查和添加現有的代碼獲取數據 –

+0

請你告訴我們一些detail.How檢索你的數據? 我想你應該使用DbNull進行檢查。但讓我們知道更多關於您的代碼 –

+1

爲例如果您使用Linq,您可以執行相同的操作: MyData.Select(x => new MyRow {x.em_id,x.f_name,email = string.IsNullOrEmpty(x.email )?「沒有電子郵件」:x.Email}); –

回答

1
foreach(DataRow dr in dt.Select("email is NULL or email=''")) 
{ 
    dr["Remarks"]="No Email"; 
} 
dt.AcceptChanges(); 

的以上將根據需要設置「備註」欄的值。

在ADO.NET
+0

修改後的代碼以設置備註列的值。請檢查 –

+0

感謝您的快速回復。我只是想知道如果我想檢查它是否爲空或空的呢? dt.Select()基本上是一個SQL查詢嗎? – RedRocket

+0

@DragonBorn在你的問題中檢查我的評論。 選擇是Linq命令 –

1

您可以輕鬆地在LINQ實現這一目標:

var noemaillist = (from m in databaseContext.TableName 
        where m.email == String.Empty 
        select m).ToList(); 
if(noemaillist != null) 
{ 
    foreach(var item in noemaillist) 
    { 
     item.remarks = "No email"; 
    } 
} 
databaseContext.SubmitChanges(); 

這將返回列表與空的電子郵件的ID和相應的空的電子郵件字段設置了備註欄「無電子郵件」。

+1

這個怎麼樣。 「我想檢索這個記錄在備註」無電子郵件「中設置了一個值。」 –

+0

是啊@RahulNikate指出你的解決方案只會篩選出空的電子郵件地址,並且不會更新'備註' – fujiFX

+0

oops ...我錯過了...感謝提醒.. Rahil和fujiFX – ViVi

2

嘗試此查詢,所以你不必檢索和修改數據表:

select emp_id, 
     f_name, 
     email, 
     ISNULL(email,'No Email') AS 'remark' 
from [tablename] 
如果你只想檢索空電子郵件添加,其中在這樣的查詢

select emp_id, 
      f_name, 
      email, 
      ISNULL(email,'No Email') AS 'remark' 
    from [tablename] where email is null 

如果你正在使用MySQL,更換ISNULLIFNULL

0

,還有的IsDBNull(<column>)財產,在LINQ你可以通過email != NULL

0
foreach (DataColumn col in dataTable.Columns) 
      { 
       foreach (DataRow row in dataTable.Rows) 
       { 
        var x=row[col.ColumnName].ToString(); 
        if (string.IsNullOrEmpty(x)) 
        { 
         var colName = col.ColumnName.ToString(); 
         row["remarks"] = string.Format("{0} is required", colName); 
        } 

       } 
      }