2015年1月2日金曜日

LINQ SampleCode

あの書き方どうだったっけというときに参照するようにいろいろコードを書いておく

ってときに見る用にいろんなサンプルコードを置いておく
・特定の文字をカウントする
string test = "gooooooooooooooooooooooooooogle";

//LINQで oの個数を調べる
int count = test.Count(c => c == 'o');

Console.WriteLine("oの数は{0}個です", count.ToString());


・数字を倍にして配列で受け取る
int[] num = { 1, 2, 3, 4, 5 };
num = num.Select(n => n * 2).ToArray();

・最初に現れる偶数は何番目か?
int[] numList = { 3, 8, 15, 18 };
Console.WriteLine(numList.Select((num, indexNo) => new { num ,indexNo})
                         .First(n =>  n.num % 2 == 0).indexNo);
Selectの第二引数を指定することで要素番号を取得する
Select内では、
numをキーにnumListから受け取る数字を値に指定
indexNoをキーに要素数を指定
Firstで2で割った時に0になる物が現れた時終了し
そのオブジェクトのindexNo(要素番号)を返す処理

・動的なAND条件
手っ取り早く、ある文字列の配列に対し、特定の文字全てを含んでいるかチェック
using System;
using System.Linq;

namespace ConsoleApplication1
{   
    class Program
    {
        static void Main(string[] args)
        {
            string[] str = { "睦月", "如月", "弥生", "卯月", "皐月", "水無月", "文月", "葉月", "長月", "神無月", "霜月", "師走"};

            string[] check = { "月", "無" };

            var result = str.Where(s => check.All(c => -1 < s.IndexOf(c)));

            Console.WriteLine(string.Join(", ", result)); //水無月, 神無月
        }
    }
}
・動的なOR条件 手っ取り早く、ある文字列の配列に対し、特定の文字がどれか含んでいるかチェック
using System;
using System.Linq;

namespace ConsoleApplication1
{   
    class Program
    {
        static void Main(string[] args)
        {
            string[] str = { "睦月", "如月", "弥生", "卯月", "皐月", "水無月", "文月", "葉月", "長月", "神無月", "霜月", "師走"};

            string[] check = { "弥", "無" };

            var result = str.Where(s => check.Any(c => -1 < s.IndexOf(c)));

            Console.WriteLine(string.Join(", ", result)); //弥生, 水無月, 神無月
        }
    }
}

0 件のコメント:

コメントを投稿