c# - 如何检查 Linq 查询结果中的 DBNull 值

标签 c# linq datatable

我正在使用以下代码并尝试按货币和代码进行分组。在此之后,我尝试遍历结果集。

但问题是在遍历结果时,最后我在每个语句中得到以下异常:

对象不能从 DBNull 转换为其他类型。

    DataTable dt = new DataTable();

    var result = from r in dt.AsEnumerable()
               result r by new
               {
                    currency = r.Field<String>("CURRENCY"),
                    Code = r.Field<String>("CODE")
               }
              into grp
              select new
              {
                   currency = grp.Key.currency,
                   Code = grp.Key.Code,
                   amount = grp.Sum(x => Convert.ToDouble(x["AMOUNT"]))
              };

    foreach (var obj in result)
    {
      String sCurr =obj.currency;
      String Code = obj.Code;
      string amount= obj.amount.ToString());
    }

请帮我解决这个问题。

最佳答案

有点像

 amount = grp.Sum(x => Convert.ToDouble(x["AMOUNT"] == DBNull.Value ? 0 : x["AMOUNT"]));

如果这是给您带来问题的线路。

关于c# - 如何检查 Linq 查询结果中的 DBNull 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19711675/

相关文章:

c# - 是否有适用于 .NET 的内置或广泛使用的不区分大小写的字符串类型

C# 从 HTTP POST 请求获取答案

c# - 使用 HtmlAgilityPack 解析 HTML 页面

c# - 为什么在 if 中使用 LINQ 会更改属性

c# - Full outer join,在 2 个数据表上,带有列列表

php - 数据表全局搜索偶尔抛出 ajax 错误

c# - 如何在 C# 中获取纪元时间?

asp.net - IEnumerable 不能与类型参数一起使用

.net - ADO .NET - 将 DataTable 添加到多个 DataSet

c# - DataTable添加列不添加行?