2013-12-19 52 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中的所有值限定爲數字。