我需要在给定的纬度和长度内找到最高的山峰。我试图修改这个例子以使用类.Max,但是不知道如何在IEnumerable<Peak>
上使用IEnumerable<double>.
,而不知道编译器IEnumerable<double>.
当然会抱怨
运算符“==”不能应用于“双”和“峰值”类型的操作数
这是我第一次使用LINQ。如何在IEnumerable<Peak> range?
中找到最大海拔
public class Peak
{
readonly Double latitude;
public Double Latitude { get { return latitude; } }
readonly Double longitude;
public Double Longitude { get { return longitude; } }
readonly Double elevation;
public Double Elevation { get { return elevation; } }
public Peak(Double latitude, Double longitude, Double elevation)
{
this.latitude = latitude;
this.longitude = longitude;
this.elevation = elevation;
}
}
private IList<Peak> FindPeaks(IList<Peak> values, int rangeOfPeaks)
{
var peaks = new List<Peak>();
var checksOnEachSide = rangeOfPeaks / 2;
for (var i = 0; i < values.Count; i++)
{
var current = values[i];
IEnumerable<Peak> range = values;
if (i > checksOnEachSide)
range = range.Skip(i - checksOnEachSide);
range = range.Take(rangeOfPeaks);
if (current.Elevation == range.Max())
peaks.Add(current);
}
return peaks;
}
发布于 2011-05-24 13:53:11
查看Max<Peak>
用法以查找最大Elevation
if (current.Elevation == range.Max(p => p.Elevation))
peaks.Add(current);
我建议您读一些关于lambda表达式的文章,以便更好地理解这个新税是如何工作的。
发布于 2011-05-24 13:52:50
指定您想要的属性的最大值:
if (current.Elevation == range.Max(p => p.Elevation))..
https://stackoverflow.com/questions/6111445
复制相似问题