是否有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