🐷
C#のLINQ機能の基本をまとめてみた
ここでは、LINQの基本的なメソッドをいくつかまとめておきます
Where
1. 指定した条件に合致する要素をフィルタリングします。
csharp
コードをコピーする
int[] numbers = { 1, 2, 3, 4, 5, 6 };
var evenNumbers = numbers.Where(n => n % 2 == 0);
Console.WriteLine(string.Join(", ", evenNumbers)); // Output: 2, 4, 6
Select
2. 各要素に対して変換を行い、新しいシーケンスを作成します。
csharp
コードをコピーする
int[] numbers = { 1, 2, 3 };
var squares = numbers.Select(n => n * n);
Console.WriteLine(string.Join(", ", squares)); // Output: 1, 4, 9
OrderBy
/ OrderByDescending
3. 要素を指定したキーに基づいて昇順または降順に並べ替えます。
csharp
コードをコピーする
string[] names = { "Alice", "Bob", "Charlie" };
var sortedNames = names.OrderBy(name => name.Length);
Console.WriteLine(string.Join(", ", sortedNames)); // Output: Bob, Alice, Charlie
csharp
コードをコピーする
var descSortedNames = names.OrderByDescending(name => name.Length);
Console.WriteLine(string.Join(", ", descSortedNames)); // Output: Charlie, Alice, Bob
First
/ FirstOrDefault
4. 条件を満たす最初の要素を取得します。条件を指定しない場合は、最初の要素を返します。FirstOrDefault
は要素が見つからない場合にデフォルト値を返します。
csharp
コードをコピーする
int[] numbers = { 1, 2, 3, 4, 5 };
int firstEven = numbers.First(n => n % 2 == 0); // Output: 2
int firstOrDefault = numbers.FirstOrDefault(n => n > 10); // Output: 0 (デフォルト値)
Sum
/ Average
/ Max
/ Min
5. 数値のコレクションに対して、合計、平均、最大値、最小値を計算します。
csharp
コードをコピーする
int[] numbers = { 1, 2, 3, 4, 5 };
int sum = numbers.Sum(); // Output: 15
double average = numbers.Average(); // Output: 3.0
int max = numbers.Max(); // Output: 5
int min = numbers.Min(); // Output: 1
Count
6. 条件を満たす要素の数をカウントします。条件を指定しない場合、全要素の数を返します。
csharp
コードをコピーする
int[] numbers = { 1, 2, 3, 4, 5, 6 };
int evenCount = numbers.Count(n => n % 2 == 0); // Output: 3
Any
/ All
7. Any
は条件を満たす要素が1つでも存在するかを確認します。All
は全ての要素が条件を満たすかを確認します。
csharp
コードをコピーする
int[] numbers = { 1, 2, 3, 4, 5 };
bool hasEven = numbers.Any(n => n % 2 == 0); // Output: true
bool allPositive = numbers.All(n => n > 0); // Output: true
Distinct
8. コレクションから重複した要素を取り除き、ユニークな要素だけを取得します。
csharp
コードをコピーする
int[] numbers = { 1, 2, 2, 3, 3, 3, 4 };
var distinctNumbers = numbers.Distinct();
Console.WriteLine(string.Join(", ", distinctNumbers)); // Output: 1, 2, 3, 4
Take
/ Skip
9. Take
は先頭から指定した数の要素を取得します。Skip
は先頭から指定した数の要素をスキップします。
csharp
コードをコピーする
int[] numbers = { 1, 2, 3, 4, 5 };
var firstTwo = numbers.Take(2); // Output: 1, 2
var skipTwo = numbers.Skip(2); // Output: 3, 4, 5
GroupBy
10. コレクションを指定したキーに基づいてグループ化します。
csharp
コードをコピーする
string[] words = { "apple", "banana", "apricot", "blueberry", "cherry" };
var groupedWords = words.GroupBy(w => w[0]);
foreach (var group in groupedWords)
{
Console.WriteLine($"Key: {group.Key}");
foreach (var word in group)
{
Console.WriteLine($" {word}");
}
}
// Output:
// Key: a
// apple
// apricot
// Key: b
// banana
// blueberry
// Key: c
// cherry
Discussion