📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)

 
(同じ利用者による、間の2版が非表示)
65行目: 65行目:
   
   
  Console.WriteLine(source.ElementAt(2));
  Console.WriteLine(source.ElementAt(2));
  // 5
  // -> 5
   
   
  Console.WriteLine(source.ElementAtOrDefault(10));
  Console.WriteLine(source.ElementAtOrDefault(10));
  // 0
  // -> 0
   
   
  Console.WriteLine(source.First());
  Console.WriteLine(source.First());
  // 3
  // -> 3
   
   
  Console.WriteLine(source.First(e => e > 5));
  Console.WriteLine(source.First(e => e > 5));
  // 6
  // -> 6
var emptyList = new List<int>();
Console.WriteLine($"FirstOrDefault() on empty list: {emptyList.FirstOrDefault()}");
// -> int型のデフォルト値 : 0
   
   
  Console.WriteLine(source.Last());
  Console.WriteLine(source.Last());
  // 9
  // -> 9
   
   
  Console.WriteLine(source.Last(e => e < 5));
  Console.WriteLine(source.Last(e => e < 5));
  // 4
  // -> 4
Console.WriteLine(source.LastOrDefault(x => x > 10));
// -> int型のデフォルト値 : 0
   
   
  Console.WriteLine(source.Single());
  Console.WriteLine(source.Single());
  // System.InvalidOperationException: シーケンスに複数の要素が含まれている
  // -> System.InvalidOperationException: シーケンスに複数の要素が含まれている
   
   
  Console.WriteLine(source.Single(e => e < 4 ));
  Console.WriteLine(source.Single(e => e < 4 ));
  // 3
  // -> 3
Console.WriteLine(source.SingleOrDefault(x => x == 3));
// -> 3
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>


== 要素の取得(複数) ==
== 要素の取得(複数) ==
した表のメソッドは、単独で使用することもできるが、組み合わせることでより複雑なデータ操作を実現できる。<br>
<br>
例えば、WhereメソッドでフィルタリングしてからTakeメソッドで上位N個を取得する場合、あるいは、SkipメソッドとTakeメソッドを組み合わせてページネーションを実装することが可能である。<br>
<br>
<center>
<center>
{| class="wikitable" | style="background-color:#fefefe;"
{| class="wikitable" | style="background-color:#fefefe;"
101行目: 115行目:
| Distinct || 重複を除いたシーケンスを返す。
| Distinct || 重複を除いたシーケンスを返す。
|-
|-
| Skip || 先頭から指定された数の要素をスキップし、残りのシーケンスを返す。
| Skip || 先頭から指定された数の要素をスキップして、残りのシーケンスを返す。<br>これは、ページネーションや、データの一部を除外する場合に便利である。<br><br>例えば、最初の10個の要素を無視して残りを取得するような場合に使用する。
|-
|-
| SkipWhile || 先頭から指定された条件を満たさなくなるまで要素をスキップし、残りのシーケンスを返す。
| SkipWhile || 先頭から指定された条件を満たさなくなるまで要素をスキップして、残りのシーケンスを返す。<br>これは、特定の条件が満たされるまでデータをスキップしたい場合に使用する。<br><br>例えば、ある値を超えるまでの要素をスキップする場合等に有効である。
|-
|-
| Take || 先頭から指定された数の要素を返す。
| Take || 先頭から指定された数の要素を返す。<br>これは、結果セットのサイズを制限する場合、または、最初のN個の要素のみが必要な場合に使用する。
|-
|-
| TakeWhile || 先頭から指定された条件を満たす要素を返す。
| TakeWhile || 先頭から指定された条件を満たす要素を返す。<br>条件が偽になった時点で取得を停止する。<br>これは、特定の条件を満たす要素のみを連続して取得したい場合に使用する。
|}
|}
</center>
</center>
131行目: 145行目:
  Console.WriteLine(source.TakeWhile(e => e < 5).ToResult());
  Console.WriteLine(source.TakeWhile(e => e < 5).ToResult());
  // → {3, 4}
  // → {3, 4}
// 組み合わせ 1
Console.WriteLine(numbers.Where(x => x % 2 == 0).Take(2).ToResult());
// -> {4, 6}
// 組み合わせ 2
Console.WriteLine(source.Skip(2).Take(4).ToResult());
// -> {5, 6, 7, 8}
// 組み合わせ 3
Console.WriteLine(source.Where(x => x > 4).Distinct().ToResult());
// -> {5, 6, 7, 8, 9}
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>