我正在寻找一种快速方法来查找存在于数据表中2个列值之间的值的次数,例如,如果我在数据表中有1行而col 1 = 100而col2 = 102则是我的数组元素100,101和1应该有1个输入我希望这很清楚。数据表最多可包含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 to DataSet查询:
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值的匿名对象。比它过滤掉数组中没有任何适当项目的结果。最后一步是计算行数。