以下转换不起作用。
错误:“只有赋值,调用,递增,递减和新对象才可以 用作声明“
VB.net
objUser.Email = IIf(IsDBNull(drow("Email")), "", drow("Email"))
C#
objUser.Email == (Information.IsDBNull(drow("Email")) ? "" : drow("Email"));
我需要在C#中使用它。任何想法??
答案 0 :(得分:3)
在C#中=
是对齐运算符,==
是比较运算符
删除==
并替换为=
。
假设drow
为DataRow
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;
}