【问题标题】:Do not create XElement when value is NULL当值为 NULL 时不要创建 XElement
【发布时间】:2020-05-17 13:58:32
【问题描述】:

但是,我有以下代码正在运行;我想省略没有价值并且无法解决这个问题的 XElements。任何的意见都将会有帮助。

        foreach (DataRow row in ds.Tables[2].Rows)
        {

            result.Add(new XElement(new XElement("action",
                                             new XElement("actionType", row["actionType"].ToString()),
                                             new XElement("originalUnits", row["originalUnits"].ToString()),
                                             new XElement("adjustedUnits", row["adjustedUnits"].ToString()),
                                             new XElement("adjustmentPercentage", row["adjustmentPercentage"].ToString()),
                                             new XElement("userMessageCode", row["userMessageCode"].ToString()),
                                             new XElement("review", row["review"].ToString())


                                             )));


        }

更新:

以下代码编译,但空元素仍然存在。

       result.Add(new XElement(new XElement("action",
                                         new XElement("actionType", row["actionType"].ToString()),
                                         row["originalUnits"].ToString() != null ? new XElement("originalUnits", row["originalUnits"].ToString()) : null,
                                         row["adjustedUnits"].ToString() != null ? new XElement("adjustedUnits", row["adjustedUnits"].ToString()) : null,
                                         new XElement("adjustmentPercentage", row["adjustmentPercentage"].ToString()),
                                         new XElement("userMessageCode", row["userMessageCode"].ToString()),
                                         new XElement("review", row["review"].ToString())


                                         )));

【问题讨论】:

    标签: c# asp.net xml linq


    【解决方案1】:

    你需要将值与DBNull.Value进行比较,而不是null,例如,

    result.Add(new XElement(new XElement("action",
                                             new XElement("actionType", row["actionType"].ToString()),
                                             row["originalUnits"] != DBNull.Value ? new XElement("originalUnits", row["originalUnits"].ToString()) : null,
                                             row["adjustedUnits"] != DBNull.Value ? new XElement("adjustedUnits", row["adjustedUnits"].ToString()) : null,
                                             new XElement("adjustmentPercentage", row["adjustmentPercentage"].ToString()))));
    

    DBNull 表示从数据库返回的不存在的值。这不同于null

    不要将面向对象编程语言中的 null 概念与 DBNull 对象混淆。在面向对象的编程语言中,null 表示没有对对象的引用。 DBNull 表示未初始化的变体或不存在的数据库列。

    【讨论】:

    • 谢谢。就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多