Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从数组中检索特定索引?_C#_.net_Linq - Fatal编程技术网

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);