是否有Linq表達式返回數組中最後一個非零值的索引?我對擴展不感興趣,只是一個簡單的linq表達式。Linq - 獲取最後一個非零值數組的索引
我想象這樣的僞代碼:
int index = {0, 2, 1}.LastOrDefaultAt(i => i > 0);
返回的值應爲2;
是否有Linq表達式返回數組中最後一個非零值的索引?我對擴展不感興趣,只是一個簡單的linq表達式。Linq - 獲取最後一個非零值數組的索引
我想象這樣的僞代碼:
int index = {0, 2, 1}.LastOrDefaultAt(i => i > 0);
返回的值應爲2;
您可以使用此Array.FindLastIndex<T>
方法:你提到「非零」
int index = Array.FindLastIndex(myIntArray, item => item > 0);
我注意到,而大於」比你的問題文本中的「零」。如果你的謂詞是:item => item != 0
?
List<T>
有此擴展方法稱爲FindLastIndex
var index = new int[] { 0, 2, 1}.ToList().FindLastIndex(x => x > 0);
class Program
{
static void Main(string[] args)
{
int[] index = { 0, 2, 1 };
var query = from p in index
where p != 0
orderby p descending
select p;
Console.WriteLine(query.FirstOrDefault());
Console.ReadKey();
}
}
輸出:如果需要的話2.可以寫在方法的語法:
var index = new int[] { 0, 2, 1 }.Where(a => a != 0).OrderByDescending(a => a).FirstOrDefault();
這正是我一直在尋找的答案。謝謝。這引起了爲什麼如果我鍵入「myIntArray」,爲什麼Intellisense不顯示FindLastIndex。 - 它顯示了許多其他方法。它確實顯示我是否鍵入「陣列」。 – BSalita
因爲它是'Array'類的靜態方法;不是實例方法。 – Ani
啊。再次感謝。似乎Intellisense應該有某種方式來爲開發人員提供其他靜態方法可用的線索。我只是花了幾個小時來處理Intellisense可能幫助阻止的事情。 – BSalita