0

以下转换不起作用。

错误:“只有赋值、调用、递增、递减和新对象可以用作语句”

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

我在 C# 中需要它。有任何想法吗??

4

4 回答 4

3

在 C#=中是赋值运算符和==比较运算符

删除==并替换为=

假设drowDataRow

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

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

于 2013-04-25T06:15:18.997 回答
1

您在 C# 变体中使用相等运算符而不是赋值运算符。更改为===因为您想要的是分配。

objUser.Email = (Information.IsDBNull(drow("Email")) ? "" : drow("Email"));
于 2013-04-25T06:16:21.547 回答
1

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

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

应该是,因为您没有进行比较,所以它是一项任务。

objUser.Email = (Information.IsDBNull(drow("Email")) ? "" : drow("Email"));
于 2013-04-25T06:16:06.067 回答
1

尝试这个:

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

请参阅 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;
}
于 2013-04-25T06:26:54.933 回答