2014-01-18 36 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值的对象。它会筛选出没有任何适当项目的结果。最后一步是获得行数。