int[] num = {1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1};
如何使用LINQ获取索引3和索引8之间的Max值和Max值的索引?
答案 0 :(得分:3)
您可以使用:
var info = num.Select( (i, ind) => new {Value=i, Index=ind}).Skip(3).Take(6)
.OrderByDescending(p => p.Value).First();
Console.WriteLine("Value {0} at Index {1}", info.Value, info.Index);
您也可以使用Aggregate
:
var info = num.Select( (i, ind) => new {Value=i, Index=ind}).Skip(3).Take(6)
.Aggregate((a, b) => b.Value > a.Value ? b : a);
如果您使用MoreLinq's MaxBy()或类似的例程来更好一点,这可以简化:
var info = num.Select( (i, ind) => {Value=i, Index=ind}).Skip(3).Take(6)
.MaxBy(p => p.Value);
答案 1 :(得分:0)
试一试。这不是一个单独的查询,但可能有所帮助。
var max = num.Skip(3).Take(4).Max();
var indexOfItem = num.Skip(3).Take(4).First(t => t.Equals(max)); // this is not correct, returns the value not the index.