我有這個數組:如何從數組中檢索特定的索引?
Point[] arr = samples.pointsArray;
我使用此行來檢索滿足條件的所有元素:
var maxXCol = arr.Where(p => maxX.X == p.X);
任何想法如何上述修改行,得到的只有這些要素的指標?
預先感謝您!
我有這個數組:如何從數組中檢索特定的索引?
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.Index
您可以使用Select
超載這需要一個索引,以及項目:
x => x.Item
和索引像這樣與原始行一起。然後只取結果集合的索引。
var maxXCol = arr
.Select((p, index) => new { Item = p, Index = index })
.Where(p => maxX.X == p.Item.X)
.Select(x => x.Index);
編輯糾正邏輯,你可以收回你的downvotes ... –
嗯,至少我可以解決你不幸的損失點... GL下次...這會教我們發佈一個有用的答案,輕微的錯誤! ;) – Crisfole
謝謝,對你也一樣。是的,我們應該在下次發佈前更好的校對:) –
var maxXCol = arr.Select((p, inx) => new { p,inx})
.Where(y => maxX.X == y.p.X)
.Select(z => z.inx);
您可以用匿名類型指數第一選擇值,以後你跟你的條件篩選,然後選擇索引。
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);
var maxXCol = arr
.Select((a, b) => new { b, a })
.Where(p => maxX.X == p.a.X)
.Select(i=>i.b);
注到downvoters:既洪扎的,我的回答是足夠的信息來正確地解決問題,但包含未成年人(容易解決你自己的)錯誤。下一次使用*評論*來表明這一點! – Crisfole