使用linq

时间:2016-04-11 15:53:08

标签: c# linq

我有敌人对象:

public class Enemy { public float maximumHealth, currentHealth; }

我有一个这个对象的数组:

public Enemy[] enemies;

作为示例,数组中包含以下项目:

Index maximumHealth currentHealth
0     100           77
1     100           37
2     100           59
3     100           99
4     100           11

如何使用Linq找到当前健康状况最高的敌人(99)?

2 个答案:

答案 0 :(得分:2)

两个选项。效率较低,因为它需要首先排序所有元素,只有感兴趣的元素...

enemies.OrderByDescending(e => e.currentHealth).First();

或更优化的是,添加对MoreLinq的引用,然后:

enemies.MaxBy(e => e.currentHealth);

效率更高,因为不需要排序...... MaxBy只扫描集合,如果评分更高,则用新的候选项替换最佳候选项。

答案 1 :(得分:2)

你可以这样做。

按降序排序array,然后查找第一个元素。

enemies.OrderByDescending(s=>s.currentHealth).First()