6

配列内の最後のゼロ以外の値のインデックスを返す Linq 式はありますか? 私は拡張機能には興味がなく、単純な linq 式だけに興味があります。

私はこの疑似コードのようなものを想像しています:

int index = {0, 2, 1}.LastOrDefaultAt(i => i > 0);

戻り値は 2 です。

4

3 に答える 3

11

Array.FindLastIndex<T>これには次のメソッドを使用できます。

int index = Array.FindLastIndex(myIntArray, item => item > 0);

質問文で「ゼロより大きい」ではなく「ゼロ以外」に言及していることに気付きました。述語は次のようにする必要がありますitem => item != 0

于 2012-12-27T04:03:53.873 に答える
4

List<T>このための拡張メソッドがありますFindLastIndex

var index = new int[] { 0, 2, 1}.ToList().FindLastIndex(x => x > 0);
于 2012-12-27T03:59:50.680 に答える
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();
于 2012-12-27T04:11:42.673 に答える