LINQの練習問題

2023年2月11日

要件からコードを作成する練習です

問題

C#で次の条件でコードを記述しなさい

int型を型パラメータにとるリストを作成します
初期値として、1,2,3,4,5を代入します
この要素の中で、4以上のものだけを抽出して、それをまたリストにします
結果を一覧表示します

解答

解説

C#でint型を型パラメータにとるリストを作成するには、List<int>を使用します。初期値として、1,2,3,4,5を代入するには、以下のように記述します

List<int> list = new List<int> { 1, 2, 3, 4, 5 };

要素の中で、4以上のものだけを抽出して、それをまたリストにするには、以下のように記述します

List<int> greaterThanFour = list.Where(x => x >= 4).ToList();

結果を一覧表示するには、foreach文を使用します

foreach (int item in greaterThanFour)
{
    Console.WriteLine(item);
}

また、もう少し簡潔に書くこともできます

greaterThanFour.ForEach(x => Console.WriteLine(x));

.NET6以前(.NET6以降でも使えます)

internal class Program
{
    private static void Main(string[] args)
    {
        List<int> list = new List<int> { 1, 2, 3, 4, 5 };
        List<int> greaterThanFour = list.Where(x => x >= 4).ToList();
        foreach (int item in greaterThanFour)
        {
            Console.WriteLine(item);
        }
    }
}

.NET6以降の場合

次のようにトップレベルステートメントでの記述ができます

 list = new List<int> { 1, 2, 3, 4, 5 };
List<int> greaterThanFour = list.Where(x => x >= 4).ToList();
foreach (int item in greaterThanFour)
{
    Console.WriteLine(item);
}

おまけ

LINQを使わなかったケースも載せておきます

.NET6以前(.NET6以降でも使えます)

class Program
{
    static void Main()
    {
        // int型のリストを作成
        List<int> list = new List<int>() { 1, 2, 3, 4, 5 };

        // 4以上の要素を抽出して新しいリストを作成
        List<int> filteredList = new List<int>();
        for (int i = 0; i < list.Count; i++)
        {
            if (list[i] >= 4)
            {
                filteredList.Add(list[i]);
            }
        }

        // 結果を一覧表示
        Console.WriteLine("4以上の要素:");
        for (int i = 0; i < filteredList.Count; i++)
        {
            Console.Write(filteredList[i] + " ");
        }
    }
}

.NET6以降の場合

// int型のリストを作成
List<int> list = new List<int>() { 1, 2, 3, 4, 5 };

// 4以上の要素を抽出して新しいリストを作成
List<int> filteredList = new List<int>();
for (int i = 0; i < list.Count; i++)
{
    if (list[i] >= 4)
    {
        filteredList.Add(list[i]);
    }
}

// 結果を一覧表示
Console.WriteLine("4以上の要素:");
for (int i = 0; i < filteredList.Count; i++)
{
    Console.Write(filteredList[i] + " ");
}

C#,学習,練習問題

Posted by hidepon