c# - 是否可以返回列表中具有最小属性的对象?

标签 c# .net linq

我的解决方案是

class Test
{
    public int X;
}    

class Program
{
    static void Main(string[] args)
    {
        var arr = new List<Test>();

        var min = arr.Min(x => x.X);
        Test a = arr.First(y => y.X == min);
    }
}

这可以仅用一行完成(仅迭代列表一次而不是两次)吗?

最佳答案

“MoreLinq”中有一个流行的 linq 扩展,它提供了“MinBy”方法:

https://www.nuget.org/packages/MoreLinq.Source.MoreEnumerable.MinBy/

使用它,您的代码将变为:

Test a = arr.MinBy(item => item.X);

另请参阅https://www.nuget.org/packages?q=id%3Amorelinq

我们经常在许多项目中使用 MoreLinq 的扩展 - 这绝对是值得的。 (我相信最初是乔恩·斯基特和其他人写的。)

关于c# - 是否可以返回列表中具有最小属性的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32247122/

相关文章:

c# - 如何更改进程或线程的 DateTime.UtcNow 值?

C# dllimport 在被 Process.Start 调用时抛出 SEHException

c# - 使用 ExpressionVisitor 获取所有 'where' 调用

linq - 使用 Linq 对日志文件行进行分组

c# - LINQ 组合查询

c# - 停止调试器后如何启动清理方法?

c# - 添加命名空间时出错

c# - 使用LINQ将XML解析成Dictionary

c# - Datagridview 列限制

c# - 新字符串类型