c# - 如何在不进行广泛搜索的情况下根据 2 个条件获取对象?

标签 c# .net linq collections

很难将其概括为 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/

相关文章:

javascript - ASP.Net @Html.TextBox 日期选择器

c# - 在 Asp.net Web 服务中集成 JWT

C# 在操作系统windows中设置环境变量(不执行)

.net - 如何在Db40中存储和图片?

c# - 为什么 Enumerable.OrderBy<TSource, TKey> 方法在不使用比较器时工作得更快

c# - 空字符串作为特例?

c# - 在 .NET 中以换行符拆分字符串的最简单方法?

c# - 流利的查询表达式——两者之间有什么优势吗?

c# - 返回基于 C# 中的另一个列表过滤的列表

c# - 在 .NET Core CLI 下构建 Mono.Options(dotnet 构建)