2014-01-18 34 views
0

我正在尋找一種快速方法來查找存在於數據表中2列值之間的值的次數,例如,如果我在數據表中有1行並且col 1 = 100和col2 = 102那麼我的數組應該有1 in的元素100,101 & 102.我希望這很清楚。數據表可以有多達50,000條記錄,因此需要滿足此條件的行數。以下代碼有效,但速度很慢。任何幫助都會大大降低。 在此先感謝。從數組中計數值在數據表列中的值

int [] arr = new int [1200]; 

for(int a=0;a<arr.GetUpperBound(0);a++) 
{ 
    arr[a] = (int)dt.Compute("Count(Col1)", a+" >= col1 And "+a+" <= col2"); 
}; 
+0

你需要找到行數或值的數量? –

回答

0

如果你需要找到它在陣列比賽至少有一個值的行數,那麼你可以嘗試以下LINQ到數據集查詢:

dt.AsEnumerable() 
    .Select(r => new { Col1 = r.Field<int>("Col1"), Col2 = r.Field<int>("Col2") }) 
    .Where(r => arr.Any(i => r.Col1 <= i && i <= r.Col2)) 
    .Count(); 

該查詢的第一個項目每行匿名具有Col1和Col2值的對象。它會篩選出沒有任何適當項目的結果。最後一步是獲得行數。