C#LINQ:如何找到IList<;峰值>;。最大值?
我需要在给定的纬度和经度内找到最高的山峰。 我试图修改以使用类Peak,但不知道如何在C#LINQ:如何找到IList<;峰值>;。最大值?,c#,linq,C#,Linq,我需要在给定的纬度和经度内找到最高的山峰。 我试图修改以使用类Peak,但不知道如何在IEnumerable而不是IEnumerable上使用.Max。 当然,编译器会抱怨 运算符“==”不能应用于 “double”和“Peak”类型的操作数 这是我第一次使用LINQ。 如何在IEnumerable范围内找到最大高程? public class Peak { readonly Double latitude; public Double Latitude { get { retu
IEnumerable
而不是IEnumerable上使用.Max。
当然,编译器会抱怨
运算符“==”不能应用于
“double”和“Peak”类型的操作数
这是我第一次使用LINQ。
如何在IEnumerable范围内找到最大高程?
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;
}
公共类峰值
{
只读双纬度;
公共双纬度{get{返回纬度;}}
只读双经度;
公共双经度{get{返回经度;}}
只读双立面图;
公共双提升{get{return Elevation;}}
公共山峰(双纬度、双经度、双高程)
{
这个。纬度=纬度;
这个经度=经度;
本图中,标高=标高;
}
}
专用IList FindPeak(IList值,int RangeofPeak)
{
var peaks=新列表();
var checksOnEachSide=峰值范围/2;
对于(变量i=0;i选中每个选项)
range=range.Skip(i-选中每个字符串);
range=range.Take(峰值范围);
如果(current.Elevation==range.Max())
峰值。添加(当前);
}
返回峰值;
}
指定您想要的最大属性:
if (current.Elevation == range.Max(p => p.Elevation))..
请参阅Max
用法,以查找Max高程
:
if (current.Elevation == range.Max(p => p.Elevation))
peaks.Add(current);
我建议您阅读一些关于sintax的内容,以便更好地了解sintax的工作原理。现在我将按照您的建议进行操作。谢谢。另外,这篇文章很好地理解了为什么lambda是一个强大的东西:。