.NET開発者のためのブログメディア
C#でのListとは?Where拡張メソッドを使った要素を検索する方法について紹介します!
- SE
- C#でのListの要素を検索する方法を教えてください。
- PM
- Where拡張メソッドを使ったListの要素検索方法について、ソースコードを交えて紹介しましょう。
目次
[C#]Listの要素を検索する方法とは?
今回は、C#でのListの要素を検索する方法について説明します。
Contains/IndexOf/LastIndexOf/Find/FindAll/LINQのWhere拡張メソッドを使ったListの要素検索方法について、ソースコードを交えて紹介します。
興味のある方はぜひご覧ください。
Contains
C#では、Contains関数でListに要素が含まれているか検索できます。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using System.Collections.Generic;
public class Hello{
public static void Main(){
// 初期化
var mylist = new List<string>(){ “red”, “green”, “blue” };
// Listに含まれているか検索
System.Console.WriteLine(mylist.Contains(“red”)); // True
System.Console.WriteLine(mylist.Contains(“yellow”)); // False
// And検索
System.Console.WriteLine(mylist.Contains(“red”) && mylist.Contains(“blue”)); // True
System.Console.WriteLine(mylist.Contains(“red”) && mylist.Contains(“yellow”)); // False
// Or検索
System.Console.WriteLine(mylist.Contains(“red”) || mylist.Contains(“yellow”)); // True
System.Console.WriteLine(mylist.Contains(“black”) || mylist.Contains(“white”)); // False
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
|
True
False
True
False
True
False
|
このようにC#では、Contains関数でListに要素が含まれているか検索できます。
IndexOf/LastIndexOf
C#では、IndexOf/LastIndexOf関数でListに要素が含まれているIndexを検索できます。見つからない場合は-1を返します。実際のソースコードを見てみましょう。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
using System.Collections.Generic;
public class Hello{
public static void Main(){
// 初期化
var mylist = new List<string>(){ “red”, “green”, “blue”, “red”, “green”, “blue” };
// 最初に登場するIndexを検索
System.Console.WriteLine(mylist.IndexOf(“red”)); // 0
System.Console.WriteLine(mylist.IndexOf(“yellow”)); // -1
// 最後に登場するIndexを検索
System.Console.WriteLine(mylist.LastIndexOf(“red”)); // 3
System.Console.WriteLine(mylist.LastIndexOf(“yellow”)); // -1
}
}
|
実行結果は以下のようになります。
1
2
3
4
|
0
-1
3
-1
|
このようにC#では、IndexOf/LastIndexOf関数でListに要素が含まれているIndexを検索できます。
Find/FindAll
C#では、Find/FindAll関数でListに含まれている要素を検索できます。Find関数は最初に見つかった要素を返し、FindAll関数は見つかったすべての要素をコレクションで返します。実際のソースコードを見てみましょう。
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
26
27
28
29
30
31
32
33
34
35
36
37
38
|
using System.Collections.Generic;
public class Hello{
public static void Main(){
// 初期化
var mystrlist = new List<string>(){ “red”, “green”, “blue”, “red”, “green”, “blue” };
var myintlist = new List<int>(){ 1, 2, 3, 1, 2, 3 };
/* Find */
// blueを検索
System.Console.WriteLine(mystrlist.Find(s => s == “blue”)); // blue
// gを含む要素を検索
System.Console.WriteLine(mystrlist.Find(s => s.Contains(“g”))); // green
// 長さが3の要素を検索
System.Console.WriteLine(mystrlist.Find(s => s.Length == 3)); // red
// 1を検索
System.Console.WriteLine(myintlist.Find(n => n == 1)); // 1
// 1より大きな要素を検索
System.Console.WriteLine(myintlist.Find(n => n > 1)); // 2
// 偶数を検索
System.Console.WriteLine(myintlist.Find(n => n % 2 == 0)); // 2
/* FindAll */
// blueを検索
System.Console.WriteLine(“{0}”, string.Join(“,”, mystrlist.FindAll(s => s == “blue”)));
// gを含む要素を検索
System.Console.WriteLine(“{0}”, string.Join(“,”, mystrlist.FindAll(s => s.Contains(“g”))));
// 長さが3の要素を検索
System.Console.WriteLine(“{0}”, string.Join(“,”, mystrlist.FindAll(s => s.Length == 3)));
// 1を検索
System.Console.WriteLine(“{0}”, string.Join(“,”, myintlist.FindAll(n => n == 1)));
// 1より大きな要素を検索
System.Console.WriteLine(“{0}”, string.Join(“,”, myintlist.FindAll(n => n > 1)));
// 偶数を検索
System.Console.WriteLine(“{0}”, string.Join(“,”, myintlist.FindAll(n => n % 2 == 0)));
}
}
|
実行結果は以下のようになります。
1
2
3
4
5
6
7
8
9
10
11
12
|
blue
green
red
1
2
2
blue,blue
green,green
red,red
1,1
2,3,2,3
2,2
|
このようにC#では、Find/FindAll関数でListに含まれている要素を検索できます。
LINQのWhere拡張メソッド
C#では、LINQのWhere拡張メソッドを使って、Listの検索できます。実際のソースコードを見てみましょう。
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
26
|
using System.Collections.Generic;
using System.Linq;
public class Hello{
public static void Main(){
// 初期化
var myintlist = new List<int>(){ 0, 1, 2, 3, 4, 5 };
var mystrlist = new List<string>(){ “red”, “green”, “blue”, “red”, “green”, “blue” };
// 偶数を検索
var result1 = myintlist.Where(n => n % 2 == 0);
// 見つかった要素数
System.Console.WriteLine(result1.Count()); // 3
// 見つかった要素
System.Console.WriteLine(“{0}”, string.Join(“,”, result1)); // 0,2,4
// 要素がredのIndexをすべて検索
var result2 = mystrlist.Select((value, index) => new {value, index})
.Where(item => string.Equals(item.value, “red”))
.Select(item => item.index);
// 見つかった要素数
System.Console.WriteLine(result2.Count()); // 2
// 見つかったIndex
System.Console.WriteLine(“{0}”, string.Join(“,”, result2)); // 0,3
}
}
|
実行結果は以下のようになります。
1
2
3
4
|
3
0,2,4
2
0,3
|
このようにC#では、LINQのWhere拡張メソッドを使って、Listの検索できます。
- SE
- なるほど。Where拡張メソッドを使ったListの要素検索方法、よく分かりました。
- PM
- ご紹介した方法を参考に、ご自身でもソースコードを書いて理解を深めてください。
まとめ
いかがでしたでしょうか。Contains/IndexOf/LastIndexOf/Find/FindAll/LINQのWhere拡張メソッドを使ったListの要素検索方法について、ソースコードを交えて紹介しました。
ぜひご自身でC#のソースコードを書いて、理解を深めてください。
Search キーワード検索
Popular 人気の記事
-
.NET Framework 3.5をWindows10にインストールする方法
2019年10月24日 -
EdgeとChromeはどう違う?それぞれのスペック7つを比較解説!
2020年09月28日 -
【VB.NET入門】DataGridViewの使い方まとめ
2019年12月22日 -
VB.NETをおすすめする3つの理由とは?VBAとの違いや勉強方法を解説
2019年12月21日 -
Windows10のテキストエディタおすすめ20選!選ぶポイント3つ
2020年04月28日
reccomended おすすめ記事
-
C#のusingステートメントでリソースの解放【Disposeとの違いとは】
2020年03月17日 -
【SQL Serverログの操作】トランザクションログの使用量を確認する方法
2020年03月16日 -
【.NETが統合】.NET 5の概要と今後のリリース予定
2020年03月05日
Categories 連載一覧
Tags タグ一覧
Jobs 新着案件
-
開発エンジニア/東京都品川区/【WEB面談可】/在宅ワーク
月給29万~30万円東京都品川区(大崎駅) -
遠隔テストサービス機能改修/JavaScript/東京都港区/【WEB面談可】/テレワーク
月給45万~60万円東京都港区(六本木駅) -
病院内システムの不具合対応、保守/東京都豊島区/【WEB面談可】/テレワーク
月給30万~30万円東京都豊島区(池袋駅) -
ソフトを用いた3DCGアート/東京都千代田区/【WEB面談可】/テレワーク
月給50万~50万円東京都千代田区(秋葉原駅) -
開発/JavaScript/東京都豊島区/【WEB面談可】/テレワーク
月給50万~50万円東京都豊島区(大塚駅)