在文件中查找最大值

时间:2013-10-30 11:39:55

标签: c#

我需要在文件中的每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();
    }
}

1 个答案:

答案 0 :(得分: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();