0

我需要在文件中的每 1000 个值中找到最大值,即,如果文件中有 5000 个值,则应该有 5 个最大值。在前 1000 个值中:一个最大值,然后在接下来的 1000 个值中,再有一个最大值....等等。

文件大小未知

我准备了一个代码,用于在文件的前 1000 个值中查找最大值。我正在考虑迭代它,以获得预期的结果,但不能。代码如下。

List<Double> list = new List<Double>();
StreamReader dat = new StreamReader(file path);
//int count = 1;
string dataline = "";
for (int i = 1; i <= dat.BaseStream.Length; i+=1000)
{
    while ((dataline = dat.ReadLine()) != null)
    {
        Double sdat = Double.Parse(dataline);
        list.Add(sdat);
        richTextBox1.Text = list.Take(1000).Max().ToString();
    }
}
4

1 回答 1

2

您可以对索引上的值进行分组并从每个组中获取最大值:

List<double> max =
  File.ReadAllLines(filePath)
  .Select((s, i) => new KeyValuePair<int, double>(i, Double.Parse(s)))
  .GroupBy(x => x.Key / 1000, x => x.Value)
  .Select(g => g.Max())
  .ToList();
于 2013-10-30T11:49:08.140 回答