2017-01-02 36 views
-2

我有一个问题,可以说我有一个数组:获得最大的从C#中的子阵列

var array = new int[] { 7, 16, 4, 9, 865, 3, -8, 56}; 

我想从指数得到最大值(可以说指数4),怎么办我这样做? 有什么样:

array.fromIndex(4).max() 

也,我试图去简单做

(array + 4).max() 

但得到一个错误

“操作符 '+' 无法应用于”

这是为什么?

谢谢!

+4

'array.Skip( 4)。最大()'? – yaakov

+1

你所有的4个问题都得到了相当好的回答。您应该通过将其标记为正确答案来返还该优惠。因为你从来没有做过[当我回答我的问题时该怎么做?](http://stackoverflow.com/help/someone-answers)文章应该有帮助。 [接受答案是如何工作的](http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work)文章甚至有一张照片。美好的一天 –

回答

3

也,我试图去简单做 (array + 4).max() 但得到一个错误“运算符‘+’无法应用”,这是为什么?

在C#中array不是您可以计算的指针。所以运营商+没有被定义为执行这样的操作。

如果你要开始你某个索引搜索最大值可以跳过所有的值到这一点:

int maxValue = array.Skip(4).Max(); 

编辑: 由建议@jdphenix的启发评论:

如果你想要更多地控制你想要搜索的最大范围,那么Take方法可能会有很大的帮助。这种组合将允许你设定子阵列的范围:如果你想指定的起点和终点指标就应该是这样的

var array = new int[] { 7, 16, 4, 9, 865, 3, -8, 56 }; 
int startIndex = 4; 
int numberOfElements = 3; 
array.Skip(startIndex).Take(numberOfElements).Max(); 

int startIndex = 4; 
int endIndex = 7; 
array.Skip(startIndex).Take(endIndex - startIndex).Max(); 
+2

此外,考虑到标题中的问题(如何从一个范围内获取最大值),提到可能的结合'Take()'和Skip()'是很有用的。 – jdphenix

+0

@ jdphenix好点,补充了信息 –