编辑最初的问题:在特定数组位置计算和重复出现的数字 - 即数组中有多少0 [34]。
更改为在DataGridView列中计算和重复出现的唯一值
这正是我想要的:http://www.codeproject.com/Tips/421557/Counting-Unique-Products-in-a-DataGridView-and-Dis
我显然可以更好地描述这个问题。
我有一个填充了随机访问文件的字节数组,我想计算一定次数,比方说,0或127出现在某个位置。目前我可以将成功匹配的数量计算到几个数字,但问题在于总结它。我试过这个:(不出意料不起作用)
if (array[34] == 0)
{
Label_a.Text = "abc";
}
int res_a = Regex.Matches(array[34].ToString(), "0").Count;
如果我使用res_a创建MessageBox,它会通过显示设置消息来识别它是否为0。但是我想计算并计算背景中将要将数据总计填充到图表中的总数。当前代码的总体布局:
// FileStream
// BinaryReader
// While length of file is larger than 0
// FileStream.Seek
// Foreach loop for array
// GET COUNT AND TOTAL HERE!
例如,我导入一个包含4条不同状态记录的文件,其中状态代码127重复3次,0只重复一次。我想获得这些信息 - 它发生了多少次!
另一个例子,这个文件有12条记录,其中状态代码127重复6次,0也是6: -
答案 0 :(得分:0)
你不能做这样的事吗?
var countOf0s = array.Count(x => x == 0);
答案 1 :(得分:0)
根据你对L.B.的评论,我知道你想要计算每个“状态”值的出现次数,所以我会尝试这样的事情:
int[] vals = new int[10] { 1, 1, 2, 2, 3, 3, 3, 4, 4, 1 };
var res = vals.GroupBy(v => v).ToDictionary(g => g.Key, g => g.Count());
res
现在拥有一个Dictionary,其中每个KeyValuePair都有一个表示状态代码的Key,以及一个表示此Status代码在数组中的时间的值。
您现在可以测试状态代码的外观数量,如下所示:
int Code1;
res.TryGetValue(1, out Code1); // testing for Status code 1
等等。
干杯