2013-12-19 54 views
2

有没有一种优雅的方法可以统计数据表中有多少个值是正数,而不必检查每个元素并检查它?我已经查看了DataTable.Compute方法和一些LINQ示例,但它们都需要一个列名,我需要它用于整个表。在数据表中计数正值

+0

怎么办你的意思是“整桌子”?你想检查表中所有列的值吗? – quetzalcoatl

+0

你是否明白,表格中可能还包含一些“技术”栏,如主键/外键,通常也是数字,它们的“符号”是没有意义的? – quetzalcoatl

+0

我无法想象任何情况下,这将是有用的。 –

回答

2

试试这个:

无需(用于码)知道列名:

dt.AsEnumerable().Select(row1 => dt.Columns.Cast<DataColumn>() 
            .ToDictionary(column => column.ColumnName, column => row1[column.ColumnName])) 
       .SelectMany(f=>f.Values) 
       .Count(f=>decimal.Parse(f.ToString())>0); 

例子:

6阳性:

enter image description here

+0

@quetzalcoatl 1)他说,不知道他们的名字....不是? 2)另外 - 有**没有办法**没有遍历所有元素。 –

+0

我已经删除了我所有的评论,因为我刚刚注意到问题是关于“DataTable”而不是“数据表”,所以关于内存操作的问题都不在查询数据库。我以某种方式误解了这一点。对不起,有任何困惑。 – quetzalcoatl

0

你有没有考虑过使用DataTable.Select?

int TotalPositiveValues = 0; 
foreach (DataColumn NextColumn in MyDataTable.Columns) 
{ 
    DataRow[] PositiveRows = MyDataTable.Select(NextColumn.ColumnName + " >=0"); 
    int TotalPositiveValues += PositiveRows.Length; 
} 

编辑:提供您的DataTable中的所有值限定为数字。