从矩形数组中获取前n个值

时间:2010-06-01 22:42:28

标签: c# multidimensional-array

我正在读取表示整数的字符串的txt文件。该文件以空格分隔。我创建了一个数组[10,2]。每次在文件中找到字符串1~10时,我将数组[n,0]递增1.我也将数组[n,1]的数字1~10加载。

即。 txt文件内容:

1/1/1 10/1/2001 1 1 10 2 2 3 1 5 10 word word 3 3 etc..
  • streamreader读取1/1/1并确定不是1~10
  • streamreader读取10/1/2001并确定它不是1~10
  • streamreader读取1和++数组[0,0]
  • streamreader读取1和++数组[0,0]
  • streamreader读取10和++数组[9,0]
  • 等。

结果将是:

  • '1'被发现3次
  • '2'被发现2次
  • '3'被发现3次
  • '5'被发现1次
  • '10'被发现2次

我的问题是我需要按照列0的值按顺序(排序)放置此数组 所以它会是:

1
3
2
10
5

数组中的第二列是这样我可以告诉原始的(最常找到的字符串)是什么。 例: array [0,0] = 5 //在txt文件中找到'1'的次数 array [0,1] = 1 //这是我知道排序后数组[0,0]值为'1' array [1,0] = 10 //在txt文件中找到'2'的次数 array [1,1] = 2 //这就是我知道排序后数组[1,0]的值是'2'

之前我只有一个deminsional数组。当我对数组进行排序时,我无法知道array [0]的原始值是什么,所以我决定创建一个rec数组,以便数组[0,1]从1切换到2,这样我就可以知道哪个字符串实际显示了最多的。从那以后这会做得多吗?

1 个答案:

答案 0 :(得分:0)

作为建议,也许您可​​以考虑使用int到int的字典。这样你就可以支持n位数值(而不是固定范围)。虽然我不确定我理解数组的第二个维度还存储了什么?

要使用当前解决方案按顺序输出它们,假设您的多数组名为_countsIndexedByValues;

var orderedCounts = _countsIndexedByValues.Select((innerArr, i) => new { Count = innerArr[0], Value = i}).OrderBy(u => u.Count);
orderCounts.ToList().ForEach(u => Console.Out.WriteLine(String.Format("'{0}' was found {1} times", u.Value, u.Count);

这是使用LINQ和匿名类型...我使用匿名类型你可以使用一对或任何你想要的。