C# 如何从数组中检索特定索引?
我有这个阵列:C# 如何从数组中检索特定索引?,c#,.net,linq,C#,.net,Linq,我有这个阵列: Point[] arr = samples.pointsArray; 我使用此行检索满足条件的所有元素: var maxXCol = arr.Where( p => maxX.X == p.X ); 知道如何修改上面的行,只获取这些元素的索引吗 提前谢谢你 编辑 使用同时获取索引和对象的Select版本,并创建一个包含对象和索引的匿名对象。它看起来是这样的: someEnumerable.Select((obj, idx) => new {Item = obj
Point[] arr = samples.pointsArray;
我使用此行检索满足条件的所有元素:
var maxXCol = arr.Where( p => maxX.X == p.X );
知道如何修改上面的行,只获取这些元素的索引吗
提前谢谢你 编辑
使用同时获取索引和对象的Select版本,并创建一个包含对象和索引的匿名对象。它看起来是这样的:
someEnumerable.Select((obj, idx) => new {Item = obj, Index = idx})
您需要在使用Where之前执行此操作,以便在过滤操作后原始索引保持不变
在以下操作中,您可以像这样使用项目:
x => x.Item
索引如下所示:
x => x.Index
您可以使用Select重载来获取索引,并将该索引与原始行一起投影。然后只获取结果集合的索引
var maxXCol = arr
.Select((p, index) => new { Item = p, Index = index })
.Where(p => maxX.X == p.Item.X)
.Select(x => x.Index);
您可以先使用匿名类型的索引选择值,然后使用条件筛选值,然后选择索引
var result = arr.Select((g, index) => new { g, index })
.Where(r => maxX.X == r.X)
.Select(t => t.index);
试试这个:
arr.Select((e,i)=>new{index=i, value=e}).Where(ei=>ei.value.X==maxX.X).Select(ei=>ei.index);
选民注意:Honza和我的回答都是足够的信息,可以正确解决问题,但包含了一些小错误,这些错误很容易纠正。下次请使用注释来说明这一点!好吧,至少我可以修复你不幸的失分…GL下一次…这将教会我们张贴一个有用的答案与小错误;谢谢,我也为你做了同样的事。是的,我们应该在下一次发布前更好地校对:
arr.Select((e,i)=>new{index=i, value=e}).Where(ei=>ei.value.X==maxX.X).Select(ei=>ei.index);
var maxXCol = arr
.Select((a, b) => new { b, a })
.Where(p => maxX.X == p.a.X)
.Select(i=>i.b);