我有如下 2 个语句来绘制图表。
public static List<KeyValuePair<int, double>> entries = new List<KeyValuePair<int, double>>();
entries.Add(new KeyValuePair<int, double>(j, min));
我想要的是 min
值只有在小于或等于列表中所有其他 min
值时才会添加到列表中。
如何实现?
谢谢。
最佳答案
只需计算所有条目的最小值并检查它是否大于您的min
值:
if (!entries.Any() || min <= entries.Min(e => e.Value))
entries.Add(new KeyValuePair<int, double>(j, min));
更新:在尝试找到最小值之前,您还需要检查条目列表中是否有任何元素。
提示:如果你总是使用这个规则来添加项目并且不以其他方式修改集合(即删除项目或在某个索引处插入)那么你可以简单地检查最后一个项目的值 - 它总是小于或等于其他值。
更新:您可以为属性和类本身创建具有描述性名称的自定义类(您可以考虑更好的名称),而不是为您的数据使用 KeyValuePair:
public class Point
{
public Point(int iteration, double value)
{
Iteration = iteration;
Value = value;
}
public int Iteration { get; private set; }
public double Value { get; private set; }
}
然后创建封装点和与这些点相关的行为的类。根据您的描述,它可能是这样的:
public class DecresingGraph
{
private List<Point> points = new List<Point>();
public void Add(Point point)
{
if (!points.Any())
{
points.Add(point);
return;
}
if (point.Value <= points.Last().Value)
points.Add(point);
}
public IEnumerable<Point> Points
{
get { return points; }
}
}
关于c# - List <T> 仅当它是所有元素中的最小值时才添加值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24454751/