首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# LINQ:如何找到IList<Peak>.Max?

C# LINQ:如何找到IList<Peak>.Max?
EN

Stack Overflow用户
提问于 2011-05-24 13:49:53
回答 2查看 2.4K关注 0票数 0

我需要在给定的纬度和长度内找到最高的山峰。我试图修改这个例子以使用类.Max,但是不知道如何在IEnumerable<Peak>上使用IEnumerable<double>.,而不知道编译器IEnumerable<double>.当然会抱怨

运算符“==”不能应用于“双”和“峰值”类型的操作数

这是我第一次使用LINQ。如何在IEnumerable<Peak> range?中找到最大海拔

代码语言:javascript
运行
复制
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;
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-24 13:53:11

查看Max<Peak>用法以查找最大Elevation

代码语言:javascript
运行
复制
if (current.Elevation == range.Max(p => p.Elevation))
    peaks.Add(current); 

我建议您读一些关于lambda表达式的文章,以便更好地理解这个新税是如何工作的。

票数 4
EN

Stack Overflow用户

发布于 2011-05-24 13:52:50

指定您想要的属性的最大值:

代码语言:javascript
运行
复制
if (current.Elevation == range.Max(p => p.Elevation))..
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6111445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档