在列表中返回具有最小属性的对象是否可能?

16 浏览
0 Comments

在列表中返回具有最小属性的对象是否可能?

我的解决方案是:

class Test
{
    public int X;
}    
class Program
{
    static void Main(string[] args)
    {
        var arr = new List();
        Test a = arr.OrderBy(x => x.X).First();
    }
}

这个问题能否只用一行代码实现(而不是两次迭代列表)?

0
0 Comments

问题的出现原因是希望在列表中返回具有最小属性的对象,并且在响应中提到了解决方案的性能较差,从而表明性能也很重要。因此,问题是在性能和单次迭代中哪个更重要。

解决方法是使用循环遍历数据,并记住具有最低值X的对象。可以通过以下代码实现:

var arr = new List();
Test minimum = null;
foreach (var x in arr) {
    if (minimum == null || x.X < minimum.X) {
        minimum = x;
    }
}
// minimum现在包含具有最低值X的对象。

这样可以在不使用Linq的情况下实现目标。通过循环遍历列表,逐个比较X的值,并更新minimum变量以保存具有最小值的对象。最终,minimum将包含具有最小属性的对象。

0
0 Comments

问题的原因是在一个列表中找到具有最小属性的对象。解决方法是使用LINQ中的OrderBy方法将序列按照所需属性的升序排序,并使用FirstOrDefault方法获取第一个元素。另外,也可以通过两次查找数组来避免排序列表所带来的性能损耗。

0
0 Comments

问题的出现原因:用户想要返回列表中具有最小属性的对象。

解决方法:使用"MoreLinq"中的"MinBy"方法。通过这个方法,可以轻松地找到具有最小属性的对象。使用这个方法,代码可以变为:Test a = arr.MinBy(item => item.X);。此外,还可以在https://www.nuget.org/packages?q=id%3Amorelinq上找到更多相关的扩展。在许多项目中,我们经常使用MoreLinq中的扩展方法,它们非常值得使用。(最初由Jon Skeet和其他人编写)

0