C# 在C中查找集合(属性)的最小值#

C# 在C中查找集合(属性)的最小值#,c#,.net,linq,collections,minimum,C#,.net,Linq,Collections,Minimum,给出Microsoft示例中的以下代码: public class EngineMeasurementCollection : Collection<EngineMeasurement> { public EngineMeasurementCollection() { Add(new EngineMeasurement { Speed = 1000, Torque = 100, Power = 20 }); Add(new Engine

给出Microsoft示例中的以下代码:

public class EngineMeasurementCollection : Collection<EngineMeasurement>
{
    public EngineMeasurementCollection()
    {
        Add(new EngineMeasurement { Speed = 1000, Torque = 100, Power = 20 });
        Add(new EngineMeasurement { Speed = 2000, Torque = 160, Power = 60 });
        Add(new EngineMeasurement { Speed = 3000, Torque = 210, Power = 125 });
        Add(new EngineMeasurement { Speed = 4000, Torque = 220, Power = 160 });
        Add(new EngineMeasurement { Speed = 5000, Torque = 215, Power = 205 });
        Add(new EngineMeasurement { Speed = 6000, Torque = 200, Power = 225 });
        Add(new EngineMeasurement { Speed = 7000, Torque = 170, Power = 200 });
    }
}
public class EngineMeasurement
{
    public int Speed { get; set; }
    public int Torque { get; set; }
    public int Power { get; set; }
}
公共类引擎度量集合:集合
{
公共工程度量集合()
{
添加(新发动机测量{转速=1000,扭矩=100,功率=20});
添加(新发动机测量{转速=2000,扭矩=160,功率=60});
添加(新发动机测量{转速=3000,扭矩=210,功率=125});
添加(新发动机测量{转速=4000,扭矩=220,功率=160});
添加(新发动机测量{转速=5000,扭矩=215,功率=205});
添加(新发动机测量{转速=6000,扭矩=200,功率=225});
添加(新发动机测量{转速=7000,扭矩=170,功率=200});
}
}
公共级发动机测量
{
公共整数速度{get;set;}
公共整数{get;set;}
公共整数幂{get;set;}
}
如何获得最小/最大转速、扭矩或功率。我需要在我正在做的图表上设置比例(精确地说是WPF工具包图表)。 我想我可以在EngineMeasurementCollection中有一个方法,它迭代每个EngineMeasurement并查看功率(或速度),但我想有一个更简单的方法吗?类集合确实有某种Min方法,但请注意,我并没有尝试获取集合的最小值(我不确定在本例中这意味着什么),而是特定属性的最小值(例如速度)。我确实看到了Collection.Min与函子的用法。有什么可以做的吗?还是跟林克?我对所有方面都感兴趣。 谢谢 戴夫

额外的问题(也许这对我来说很明显,答案是min/max)。有哪些选项可以决定某个值(例如“速度”)是否已在集合中。这个例子并不清楚,但是如果你已经有了某个自变量的数据(比如时间),你就不需要更多了。那么是否有类似于Collection.Contains(“指定您感兴趣的属性”)的内容呢

另请参见:


要补充盖隆的回答:

int minSpeed = collection.Min(em => em.Speed);
我会给你最低限度的。但你可能会自己发现;)


您可以查看使用linq查找最大/最小值的步骤。

要回答您关于“包含”类型方法的问题,如果您想要布尔指示其存在,可以使用
Any
方法,或者,您可以使用
first或default
查找满足条件的第一个
EngineMeasurement
事件。如果它存在,它将返回实际对象,否则它将返回该对象的默认值(本例中为null)

int minSpeed = collection.Min(em => em.Speed);
bool result = collection.Any(m => m.Speed == 2000); // true

// or

var em = collection.FirstOrDefault(m => m.Speed == 2000);
if (em != null)
    Console.WriteLine("Torque: {0}, Speed: {1}", em.Torque, em.Speed);