【问题标题】:LINQ C#: Exclude columns where total = 0, without knowing column names or type?LINQ C#:在不知道列名或类型的情况下排除总计 = 0 的列?
【发布时间】:2013-11-26 08:23:36
【问题描述】:

使用 LINQ:

如何在不知道列名或类型的情况下迭代表的列并排除等于零的列?

谢谢!

【问题讨论】:

  • 出于什么目的?我怀疑这种字段级过滤(与记录级过滤相反)应该在 UI 而不是 DAL 中进行...
  • 没有数据库访问权限,我正在获取传入的数据集。

标签: linq sum datacolumn


【解决方案1】:

想通了:

 string[] columnNames = dt.Columns.Cast<DataColumn>()
                             .Select(x => x.ColumnName)
                             .ToArray();

        List<string> cols = new List<string>();

        int n;
        foreach (string cn in columnNames)
        {

            if (dt.AsEnumerable().Where(s => int.TryParse(s[cn].ToString(), out n)).Sum(s => Convert.ToInt32(s[cn])) > 0)
            {
                cols.Add(cn);                
            }

        }

【讨论】:

  • 如果一条记录有 1 而一条记录有 -1 怎么办?
  • 数据的本质是它永远不会是-1。但是,如果您想要底片,那么只需在 > 0 的布尔值中处理它
  • 我的意思是你想要所有的列总和为 0 还是所有的列都为零?如果没有负数,那就没关系了。
  • 我排除了 SUM 为 0 的所有列。不,没有负数。感谢您的检查:)
猜你喜欢
  • 2016-12-03
  • 1970-01-01
  • 2013-02-24
  • 2013-08-06
  • 1970-01-01
  • 2014-12-07
  • 2018-01-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多