我的解决方案是
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/