C# 如何使用Math.Max,Math.Min查找三个最大的十进制数和三个最小的十进制数

C# 如何使用Math.Max,Math.Min查找三个最大的十进制数和三个最小的十进制数,c#,asp.net,C#,Asp.net,我使用Math.Max和Math.Min在以下代码中查找最大和最小小数: decimal[] numbers = { d1, d2, d3, d4, d5, d6, d7, d8, d9, d10 }; decimal biggestNumber = numbers.Max(); decimal lowestNumber = numbers.Min(); lblS1Val.Text = biggestNumber.ToString(); lblO1Val.Text = lowestNumber.

我使用Math.Max和Math.Min在以下代码中查找最大和最小小数:

decimal[] numbers = { d1, d2, d3, d4, d5, d6, d7, d8, d9, d10 };
decimal biggestNumber = numbers.Max();
decimal lowestNumber = numbers.Min();
lblS1Val.Text = biggestNumber.ToString();
lblO1Val.Text = lowestNumber.ToString();

我想找出三个最大和三个最小的数字。我能用Math.Max/Min做到这一点吗?

虽然您可以使用
Math.Min
Math.Max
来满足您的需要,但有一种更简单的使用方法,因为它们是为处理集合而设计的,这就是我们在这里要处理的:

numbers.OrderBy(n=>n).Take(3);
numbers.OrderByDescending(n=>n).Take(3);
var smallestThree = numbers.OrderBy(x => x).Take(3);
var largestThree = numbers.OrderByDescending(x => x).Take(3);
注意,这将返回
IEnumerable
,因此如果您想
ToString
它,可以使用
string.Join

lblS1Val.Text = string.Join(", ", largestThree);
lblO1Val.Text = string.Join(", ", smallestThree);

最大值/最小值只返回一个值。。。要找到三个值,您需要使用其他解决方案,如linq.Wow,这非常简单!谢谢您的快速回复。@66Mhz欢迎。很高兴它有帮助。有没有办法返回存储三个最大和三个最小数字的变量名?例如,除了返回最大值和最小值之外,我还可以返回存储三个最大值和最小值的变量名吗?@66Mhz可以执行您要求的操作,但需要更复杂的操作。如果你真的需要,你可以阅读。尽管如此,如果你有一个包含
名称
属性和
属性的类,你可以很容易地做到这一点。感谢链接,看起来我有一些研究要做。因为它们不需要。OrderBy将从最大到最小排序,Take(3)将返回前3个结果。OrderByDescending的作用正好相反。