C# LINQで値を取得するサンプル

C#のLINQで値を取得するサンプルです。

確認環境
・Microsoft Visual Studio Community 2017

目次

LINQ

LINQでリストから条件を指定して値を取得する

LINQでリストから条件を指定して値を取得するサンプルです。

using System;
using System.Collections.Generic;
using System.Linq;

class Test1
{
    static void Main()
    {
        var number1 = new List<int>() { 100,20,30,20,50 };

        // クエリ構文
        var q1 = from x in number1
                 where x > 30
                 select x;

        foreach (var a in q1)
        {
            Console.WriteLine(a);// 100 50が出力される
        }

        // メソッド構文
        var q2 = number1
                .Where(x => x > 30)
                .Select(x => x);

        foreach (var a in q2)
        {
            Console.WriteLine(a);// 100 50が出力される
        }
    }
}

9行目は、リストで変数にint型の数値をセットしています。
12~14行目はクエリ構文です。
13行目はwhereで30より大きいという条件を付けています。
22~24行目は、メソッド構文です。
23行目はラムダ式です。(x => x > 30)は、引数がxで戻り値がx>30という意味です。

LINQでリストの値の並び順を変えて取得する

LINQでリストの値の並び順を変えて取得するサンプルです。

using System;
using System.Collections.Generic;
using System.Linq;

class Test1
{
    static void Main()
    {
        var number1 = new List<int>() { 100,20,30,20,50 };

        // クエリ構文
        var q1 = from x in number1
                 orderby x 
                 //orderby x descending
                 select x;

        foreach (var a in q1)
        {
            Console.WriteLine(a);// 20 20 30 50 100が出力される
        }

        // メソッド構文
        var q2 = number1
                .OrderBy(x => x)
                //.OrderByDescending(x => x)
                .Select(x => x);

        foreach (var a in q2)
        {
            Console.WriteLine(a);// 20 20 30 50 100が出力される
        }
    }
}

12~15行目はクエリ構文です。
13行目はorderbyで昇順を指定しています。
14行目は降順の書き方です。コメントにしています。

23~26行目は、メソッド構文です。
24行目はラムダ式です。(x => x)は、引数がxで戻り値がxという意味です。OrderByで昇順を指定しています。
25行目は降順の書き方です。コメントにしています。OrderByDescendingと記述します。

LINQでリストの値の重複を除いて取得する

LINQでリストの値の重複を除いて取得するサンプルです。

using System;
using System.Collections.Generic;
using System.Linq;

class Test1
{
    static void Main()
    {
        var number1 = new List<int>() { 100,20,30,20,50 };

        var q1 = (from x in number1
                 select x).Distinct();

        foreach (var a in q1)
        {
            Console.WriteLine(a);// 100,20,30,50が出力される
        }
    }
}

12行目は、Distinct()でリストの重複した値を取り除きます。

LINQで集計操作を行う

LINQで集計操作を行うサンプルです。

using System;
using System.Collections.Generic;
using System.Linq;

class Test1
{
    static void Main()
    {
        var number1 = new List<int>() { 100,20,30,20,50 };

        Console.WriteLine(number1.Average()); //44 平均

        Console.WriteLine(number1.Sum()); //220 合計

        Console.WriteLine(number1.Max()); //100 最大値

        Console.WriteLine(number1.Min()); //20 最小値

        Console.WriteLine(number1.Count()); //5 要素数
    }
}

9行目は、リストです。
平均、合計、最大値、最小値、要素数を求めることができます。

関連の記事

C# if文のサンプル
C# switch文のサンプル
C# while文とdo while文のサンプル
C# for文のサンプル(foreach/break/continue)
C# 配列のサンプル

△上に戻る