Architect's Log

I'm a Cloud Architect. I'm highly motivated to reduce toils with driving DevOps.

IEnumerable.Whereメソッド

Enumerable.Where(TSource) メソッド (IEnumerable(TSource), Func(TSource, Boolean)) (System.Linq)
述語に基づいて値のシーケンスをフィルター処理します。

SQLでは、WHEREに相当します。

ソースコード

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

namespace LinqSample {
    class Program {
        static void Main(string[] args) {
            Man[] manArray = new Man[] { 
                new Man() { Name = "suzuki taro", Age = 20 },
                new Man() { Name = "sato taro", Age = 21 },
                new Man() { Name = "sato jiro", Age = 20 }
            };

            // 苗字でフィルタリングする。
            IEnumerable<Man> mans = manArray.Where(man => man.Name.Split(' ')[0] == "sato");
            
            foreach (Man man in mans) {
                Console.WriteLine(man);
            }

            Console.ReadKey();
        }
    }

    class Man {
        public string Name { get; set; }
        public int Age { get; set; }

        public override string ToString() {
            return string.Format("Name = {0}, Age = {1}", Name, Age);
        }
    }
}

実行結果