LINQ查询如何选择起始索引和结束索引之间的最大值以及最大值对应的索引
本文关键字:索引 最大值 结束 之间 何选择 查询 选择 LINQ | 更新日期: 2023-09-27 18:18:54
int[] num = {1,2,3,4,5,6,7,8,9,8,7,6,5,4,3,2,1};
我如何使用LINQ来获得索引3和索引8之间的最大值和索引?
您可以使用:
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的MaxBy()或类似的例程,可以简化这一点:
var info = num.Select( (i, ind) => {Value=i, Index=ind}).Skip(3).Take(6)
.MaxBy(p => p.Value);
试试吧。这不是一个单一的查询,但可能会有所帮助。
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.