List 查询时字段有空值怎么处理

chanalva 2017-02-08 09:07:34
因需要对动态构建的DataTable对象进行统计,求极差、平均值等,在做如下运算时lColumn.ColumnName所指的字段
会存在空值的情形,因此引发报错,使用下面方法进行处理均报错

1.lnMax = dataTable.AsEnumerable().Where(t => Convert.IsDBNull(t.Field<Double>(lColumn.ColumnName)) == false).Select(t => t.Field<Double>(lColumn.ColumnName)).Max()

2.lnMax = dataTable.AsEnumerable().Where(t => t.Field<Double>(lColumn.ColumnName) != null).Select(t => t.Field<Double>("X2")).Max();

求助!
...全文
1006 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chanalva 2017-02-08
  • 打赏
  • 举报
回复
谢谢各位的关心,非常感谢!
chanalva 2017-02-08
  • 打赏
  • 举报
回复
非常感谢!问题已解决!
正怒月神 2017-02-08
  • 打赏
  • 举报
回复
或者 ,你可以直接使用 datatable.select来过滤
var dataTable = GetDT().Select("isnull(a,'')<>''").CopyToDataTable();
            var q = dataTable.AsEnumerable().Where(t => t.Field<double?>("a") != null).Select(t => t.Field<double?>("a")).Max();
正怒月神 2017-02-08
  • 打赏
  • 举报
回复
填充 datatable的时候有问题
static void Main(string[] args)
        {
            var dataTable = GetDT();
            var q = dataTable.AsEnumerable().Where(t => t.Field<double?>("a") != null).Select(t => t.Field<double?>("a")).Max();

            Console.ReadLine();
        }

        public static DataTable GetDT()
        {
            DataTable data = new DataTable();
            data.Columns.Add("a",typeof(double));

            for (int i = 0; i < 5; i++)
            {
                DataRow dr = data.NewRow();
                if (i % 2 == 0)
                {
//这里如果你填充的是 Null,那么 Main方法中  t.Field<double?>("a")  会将  空字符串"" 尝试转换成double,而不是Null转换double?  所以会报错
                    dr[0] = DBNull.Value;
                }
                else
                {
                    dr[0] = i;
                }
                data.Rows.Add(dr);
            }
            return data;
        }
xdashewan 2017-02-08
  • 打赏
  • 举报
回复
DataTable求聚合可以用DataTable.Compute方法,给你参考 https://msdn.microsoft.com/library/system.data.datatable.compute(v=vs.100).aspx http://www.cnblogs.com/fanyf/archive/2012/05/11/2495919.html

8,497

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 LINQ
社区管理员
  • LINQ
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧