C#でLinqの結果でNull回避したい場合の処理!

C#でLINQを使ってコードを書いていて下記のようなパターンにぶち当たったのでその備忘録。

まず。配列を用意。

        static void Main(string[] args)
        {
            var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};
        }

この中から、3で割り切れる数字を取得してみる。

            var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};

            var extractionItems = items.Where(item => item % 3 == 0);

            foreach (var item in extractionItems)
            {
                Console.WriteLine(item);
            }

            Console.ReadLine();

結果はこんな感じになる。

では結果がない場合の処理をやってみる。

例えば、10000で割り切れる場合の数字を取得してみるが、MAXの数字は100なので、値は絶対にない。

        static void Main(string[] args)
        {
            var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};

            var extractionItems = items.Where(item => item % 10000 == 0);

            foreach (var item in extractionItems)
            {
                Console.WriteLine(item);
            }

            Console.ReadLine();
        }

結果はこう

なぜかNullPointerExeptionがスローされていない。

デバッグで中身を見てみるとNullではない。

とりあえず、列挙体がないという結果が返っているらしい。

        static void Main(string[] args)
        {
            var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};

            var extractionItems = items.Where(item => item % 10000 == 0);

            if (extractionItems == null)
            {
                Console.WriteLine("結果はNullです。");
            }
            else
            {
                Console.WriteLine("結果をNullではありません。");
            }

            Console.ReadLine();
        }

なのでこれにNull回避をしても下記のようになる。

目次

C#でLinqを使って結果Nullを回避する。

ではどのようにして、Linqの結果がない場合を捕捉するのか?

下記のようにすればいい。

    class Program
    {
        static void Main(string[] args)
        {
            var items = new int[]{1,2,3,5,8,9,7,10,66,78,99,100};

            var extractionItems = items.Where(item => item % 10000 == 0);

            if (extractionItems.Any())
            {
                Console.WriteLine("結果がありました。");
            }
            else
            {
                Console.WriteLine("結果はありません。");
            }

            Console.ReadLine();
        }
    }

この記事が気に入ったら
いいねしてね!

どんどんシェア待ってるぜ!!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次