今回のテーマ
こんばんは、サルモリです。
今回もLinqのSelectメソッドの使い方として、下記のテーマについて書いていきます。
今回のテーマ
リストや配列を複数のリストや配列に分割する方法
今回はLinqを使用して、リストや配列を分割する方法を紹介していきます。
使用するLinqメソッドはSelect文とGroupByです。解説した記事があるので、良ければみてください。
ポイント
Selectメソッドで2つの引数を指定した処理の動きを理解できます。
CHECK
-
【C# sharp Linq】Selectメソッドで配列やリストに連番を割り振る方法
ChatGPTのAPIを使わずに自動化することが可能です。 下記の本を読めば、ChatGPT4でも料金掛からずに自動化できます!KindleUnlimited会員であれば無料で読めます。 今回のテーマ ...
続きを見る
ポイント
他のLinqの記事についてはこちら
Linqメソッドの解説の流れ
下記の流れで説明したいと思います。
行いたい処理の例を書きます。
Linqを使用するソースコードを書いていきます。
ソースコードには、リストと配列を使います。
Linqを使用して、配列を分割する方法
早速、Linqを使用して、配列を複数の配列に分割します。
行いたい処理
String型の配列を3要素ずつの配列に分割したい。
3要素の配列に分割
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { String[] array = new string[] { "dog", "cat", "mouse", "lion" ,"bear","fox","tiger","pig","camel"}; var arrayGroup = array.Select((Name, No) => new { Name, No }).GroupBy(x => x.No / 3).ToArray(); foreach(var arrayitem in arrayGroup) { foreach(var item in arrayitem) { Console.WriteLine(item.Name); } Console.WriteLine("-----------------------------"); } } } } |
result
dog
cat
mouse
-----------------------------
lion
bear
fox
-----------------------------
tiger
pig
camel
-----------------------------
3要素ずつ分割できていますね。下記の処理の流れが行われています。
step
1Selectメソッドで各配列の要素に対して、連番が割り振られる。
step
2Groupメソッドで各要素の連番に対して、3で割った値でグループ分けする。
下記のようなイメージで考えて頂ければいいと思います。Noでグループ化をしてます。
No | 要素の値 |
0 | dog |
0 | cat |
0 | mouse |
1 | lion |
1 | bear |
1 | fox |
2 | tiger |
2 | pig |
2 | camel |
リストも同様にやってみましょう。こちらは2要素ずつ分けてみます。
行いたい処理
String型リストを2要素ずつのリストに分割したい。
2要素のリストに分割
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApp3 { class Program { static void Main(string[] args) { String[] array = new string[] { "dog", "cat", "mouse", "lion" ,"bear","fox","tiger","pig","camel"}; List<string> list = new List<string>(); list = array.ToList(); var listGroup = list.Select((Name, No) => new { Name, No }).GroupBy(x => x.No / 2).ToList(); foreach(var arrayitem in listGroup) { foreach(var item in arrayitem) { Console.WriteLine(item.Name); } Console.WriteLine("-----------------------------"); } } } } |
result
dog
cat
-----------------------------
mouse
lion
-----------------------------
bear
fox
-----------------------------
tiger
pig
-----------------------------
camel
-----------------------------
リストでも簡単に分割することができます。
まとめ
今回はリストや配列を分割する方法を紹介しました。
意外とリストや配列の分割は使いたい場面が多いので、是非覚えてください。
前回の記事のSelectメソッドの連番割り振りを早速応用として使いました。
メソッドを合わせて使うと本当に色々なことが可能なので、皆さんも色々考えてみてくださいね。
最後まで見て頂きありがとうございました。
配列、リストなどの記事はこちら
他のLinqの記事についてはこちら