Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#LINQ:如何找到IList<;峰值>;。最大值?_C#_Linq - Fatal编程技术网

C#LINQ:如何找到IList<;峰值>;。最大值?

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

我需要在给定的纬度和经度内找到最高的山峰。 我试图修改以使用类Peak,但不知道如何在
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是一个强大的东西:。