如何在不进行大量搜索的情况下根据2个标准获取对象?

Joa*_*nge 2 .net c# linq collections

很难将此概括为1行问题.我有一个这样的课:

class Item
{
    int Count {get; set;}
    double Value {get; set;}
}
Run Code Online (Sandbox Code Playgroud)

List<Item>包含任意数量Item值的a.

如何获得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}
Run Code Online (Sandbox Code Playgroud)

所以这里我想要的值是{2, 35}因为它具有Count所有项目中的最低值,并且对于具有相同Count值的项目,它具有最高值Value.

Jon*_*eet 5

好的,现在我们已经有了一点清晰度:

只要它具有最低的Count,该范围内的最高值就可以了

这很简单...

var best = list.OrderBy(x => x.Count)
               .ThenByDescending(x => x.Value)
               .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

null如果列表为空,则会给出,否则为最低计数的项,如果有多个具有该计数,则为最高值的项.

这比它可能是低效率的,因为我们可以真正创造一个比较器来比较任何两个数值做一个单通道-但是这肯定会是它得到的最少的代码,右边元素的方法.