vb.net到c#转换为IsDBNull不起作用

时间:2013-04-25 06:12:42

标签: c#

以下转换不起作用。

  

错误:“只有赋值,调用,递增,递减和新对象才可以   用作声明“

VB.net
objUser.Email = IIf(IsDBNull(drow("Email")), "", drow("Email"))
C#
objUser.Email == (Information.IsDBNull(drow("Email")) ? "" : drow("Email"));

我需要在C#中使用它。任何想法??

4 个答案:

答案 0 :(得分:3)

在C#中=是对齐运算符,==是比较运算符

删除==并替换为=

假设drowDataRow

objUser.Email = (drow.IsNull("Email") ? String.Empty : drow["Email"].ToString());

?:是三元运算符,它总是返回一个值。在您的情况下,该值已分配给objUser.Email

答案 1 :(得分:1)

您不小心使用了比较运算符而不是赋值运算符。

objUser.Email == (Information.IsDBNull(drow("Email")) ? "" : drow("Email"));

应该是,因为你没有做比较,它是一个任务。

objUser.Email = (Information.IsDBNull(drow("Email")) ? "" : drow("Email"));

答案 2 :(得分:1)

您在C#变体中使用的是等号运算符而不是赋值运算符。 将==更改为=,因为您想要的是作业。

objUser.Email = (Information.IsDBNull(drow("Email")) ? "" : drow("Email"));

答案 3 :(得分:1)

试试这个:

objUser.Email = (DBNull.Value == drow("Email")) ? "" : drow("Email"));

请参阅Documentation了解DbNull - 您将在哪里找到示例:

来自MSDN

private string AddFieldValue(string label, DataRow row, 
                             string fieldName) 
{                                
   if (! DBNull.Value.Equals(row[fieldName])) 
      return (string) row[fieldName] + " ";
   else
      return String.Empty;
}