2016-04-27 57 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); 
        } 

       } 
      }