我有一個雙精度數組和一個閾值。 我想選擇索引中的值大於閾值的數組中的第一個索引。選擇具有大於閾值的數組的索引
如何在LINQ
中完成該操作?
我得到它一起工作:
var n = acc_avg.Select((val, index) => new {Val = val, Index = index})
.Where(l => l.Val > threshold)
.First()
.Index
但是否有更好的辦法?
我有一個雙精度數組和一個閾值。 我想選擇索引中的值大於閾值的數組中的第一個索引。選擇具有大於閾值的數組的索引
如何在LINQ
中完成該操作?
我得到它一起工作:
var n = acc_avg.Select((val, index) => new {Val = val, Index = index})
.Where(l => l.Val > threshold)
.First()
.Index
但是否有更好的辦法?
您可以使用Array.FindIndex
:
var n = Array.FindIndex(acc_avg, x => x > threshold);
你的解決方案看起來相當不錯的給我,但我相信,如果有序列中的元素符合條件的,將拋出異常。我會考慮FirstOrDefault而不是First,並在訪問之前測試null。
var n = acc_avg.Select((val,index) => new {Val= val, Index = index}).Where(l=> l.Val > threshold).FirstOrDefault();
if(n != null)
DoSomething(n.Index);
當然,如果你的對象已經有一個索引屬性(或者如果序列中的位置是不是對你很重要),你可以縮短這:
var n = acc_avg.FirstOrDefault(l => l > threshold);
但你可能知道那。 :)
你可能想要多少簡單?您已經從較大的陣列中選擇一個新陣列,然後應用您的位置條件。你是否試圖獲得最大總值或某物? –