很难将其概括为 1 行问题。我有这样一个类:
class Item
{
int Count {get; set;}
double Value {get; set;}
}
和一个List<Item>
包含任意数量的 Item
值(value)观。
我怎样才能得到 Item
最低Count
最高Value
?
性能并不重要,但优雅很重要,因为我不想用巨大的嵌套循环来执行此操作,除非没有优雅的方式,即 Linq 等。
编辑:
这是一个示例列表,可能包含这些 Items
:
{Count, Value}
{2, 10}, {6, 60}, {5, 21}, {4, 65}, {2, 35}, {4, 18}, {3, 55}, {7, 99}, {2, 25}
所以这里我想要的值是{2, 35}
因为它有最低的 Count
所有项目,以及具有相同 Count
的项目值,它具有最高的Value
.
最佳答案
好的,现在我们有点清楚了:
as long as it has the lowest Count, the highest Value in that range is OK
这很容易...
var best = list.OrderBy(x => x.Count)
.ThenByDescending(x => x.Value)
.FirstOrDefault();
如果列表为空,则返回 null
,否则返回计数最低的项目,如果有多个具有该计数的项目,则返回值最高的项目。
这比它可能的效率要低,因为我们可以真的通过创建一个比较器来比较任何两个值来一次性完成它 - 但这肯定是正确的方法最少代码中的元素。
关于c# - 如何在不进行广泛搜索的情况下根据 2 个条件获取对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7864806/