c# 导致问题的最后 26 个结果的最小值最大值

c# Min Max of the last 26 results causing Problems

大家好,我对以下问题感到绝望我需要我在名为 "MyCotDataList" 的 csv 中获得的 2 个值的最后 26 个结果的最小值和最大值。经过一番研究后,我尝试了这种方式:

 MyCotDataList.Add(new COTData_Obj
                {
                    Time =  DateTime.Parse(split[0]), 
                    CN = double.Parse(split[5]) - double.Parse(split[6]),
                }); 


                var last26CnValues = MyCotDataList
                    .AsEnumerable()
                        .Reverse()
                        .Take(26)
                          .Select(x => x.CN)
                        .ToArray();

                MyCotDataList.Add(new COTData_Obj
                {

                 Min = last26CnValues.Min(),
                 Max = last26CnValues.Max(),
                }
                );     

但现在输出中不再是正确的数字,我现在每秒得到一个零值 i return。使我用数据创建的图表上的一条线呈锯齿形排列。

如果我 /**/ 输出

      /*          var last26CnValues = MyCotDataList
                    .AsEnumerable()
                        .Reverse()
                        .Take(26)
                          .Select(x => x.CN)
                        .ToArray();

                MyCotDataList.Add(new COTData_Obj
                {

                 Min = last26CnValues.Min(),
                 Max = last26CnValues.Max(),
                }
                );  */

它正确显示 CN 如果我让它再次保持曲折。 我没有遇到任何编译错误,它根本没有按照我的意图进行,这显然是由于我缺乏 c# 技能。

你能帮我解决这个问题或给我一些提示吗? :D 非常感谢!

因为这部分代码在您的列表中添加了一个新的 COTData_Obj 对象,其中 CN 值为零。因为你没有设置 CN 并且它默认为 0。而之前添加的对象MinMax为零,因为你没有设置这些

MyCotDataList.Add(new COTData_Obj
{
    Min = last26CnValues.Min(),
    Max = last26CnValues.Max(),
}

您应该将其设置为列表中已有的对象。我想这应该可行

COTData_Obj row = new COTData_Obj
                {
                    Time =  DateTime.Parse(split[0]), 
                    CN = double.Parse(split[5]) - double.Parse(split[6]),
                };
MyCotDataList.Add(row); 


                var last26CnValues = MyCotDataList
                    .AsEnumerable()
                        .Reverse()
                        .Take(26)
                          .Select(x => x.CN)
                        .ToArray();

                row.Min = last26CnValues.Min();
                row.Max = last26CnValues.Max();