技術記事: C# LINQ メソッドの使い方
C#において、LINQ (Language Integrated Query) はデータへのクエリを簡潔に書くための強力な機能です。以下に、よく使われるLINQメソッドの使い方を具体的な例とともに紹介します。
- Select - コレクション内の各要素に対して操作を行う
var numbers = new[] { 1, 2, 3, 4, 5 };
var squaredNumbers = numbers.Select(n => n * n);
- Where - コレクション内の要素をフィルタリングする
var evenNumbers = numbers.Where(n => n % 2 == 0);
- OrderBy - コレクション内の要素を昇順に並び替える
var orderedNumbers = numbers.OrderBy(n => n);
- OrderByDescending - コレクション内の要素を降順に並び替える
var descendingNumbers = numbers.OrderByDescending(n => n);
- ThenBy - 前のOrderByまたはThenByの後に追加のソート条件を適用する
var people = new[]
{
new { Name = "Alice", Age = 30 },
new { Name = "Bob", Age = 30 },
new { Name = "Charlie", Age = 25 }
};
var orderedPeople = people.OrderBy(p => p.Age).ThenBy(p => p.Name);
- ThenByDescending - 前のOrderByまたはThenByの後に追加の降順ソート条件を適用する
var descendingOrderedPeople = people.OrderBy(p => p.Age).ThenByDescending(p => p.Name);
- GroupBy - コレクション内の要素をキーに基づいてグループ化する
var ageGroups = people.GroupBy(p => p.Age);
- ToList - コレクションをListに変換する
var numberList = numbers.ToList();
- ToArray - コレクションを配列に変換する
var numberArray = numbers.ToArray();
- First - コレクションの最初の要素を返す
var firstNumber = numbers.First();
- FirstOrDefault - コレクションの最初の要素を返す。存在しない場合はデフォルト値を返す
var firstOrZero = numbers.FirstOrDefault(n => n > 10);
- Last - コレクションの最後の要素を返す
var lastNumber = numbers.Last();
- LastOrDefault - コレクションの最後の要素を返す。存在しない場合はデフォルト値を返す
var lastOrZero = numbers.LastOrDefault(n => n > 10);
- Single - コレクションから単一の要素を返す
var singleNumber = numbers.Single(n => n == 3);
- SingleOrDefault - コレクションから単一の要素を返す。存在しない場合はデフォルト値を返す
var singleOrZero = numbers.SingleOrDefault(n => n > 10);
- Count - コレクション内の要素数を返す
var totalCount = numbers.Count();
- Sum - コレクション内の数値要素の合計を返す
var totalSum = numbers.Sum();
- Average - コレクション内の数値要素の平均値を返す
var averageValue = numbers.Average();
- Max - コレクション内の最大値を返す
var maxValue = numbers.Max();
- Min - コレクション内の最小値を返す
var minValue = numbers.Min();
- All - 全ての要素が指定した条件を満たすかどうかを確認する
var allEven = numbers.All(n => n % 2 == 0);
- Any - いずれかの要素が指定した条件を満たすかどうかを確認する
var anyOdd = numbers.Any(n => n % 2 != 0);
- Contains - コレクションが特定の要素を含むかどうかを確認する
var containsThree = numbers.Contains(3);
- Distinct - コレクションから重複する要素を除いて返す
var distinctNumbers = numbers.Distinct();