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