【C#】
シーケンスの最初の要素を返します。 public static TSource First<TSource> (this IEnumerable<TSource> source) 指定された条件を満たす、シーケンスの最初の要素を返します。 public static TSource First<TSource> (this IEnumerable<TSource> source, Func<TSource, bool> predicate)【VB】
シーケンスの最初の要素を返します。 <ExtensionAttribute> Public Shared Function First(Of TSource) (source As IEnumerable(Of TSource)) As TSource 指定された条件を満たす、シーケンスの最初の要素を返します。 <ExtensionAttribute> Public Shared Function First(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As TSource
Enumerable.FirstOrDefaultメソッド
【C#】
シーケンスの最初の要素を返します。シーケンスに要素が含まれていない場合は既定値を返します。 public static TSource FirstOrDefault<TSource> (this IEnumerable<TSource> source) 条件を満たす、シーケンスの最初の要素を返します。このような要素が見つからない場合は既定値を返します。 public static TSource FirstOrDefault【VB】(this IEnumerable<TSource> source, Func predicate)
シーケンスの最初の要素を返します。シーケンスに要素が含まれていない場合は既定値を返します。 <ExtensionAttribute> Public Shared Function FirstOrDefault(Of TSource) (source As IEnumerable(Of TSource)) As TSource 条件を満たす、シーケンスの最初の要素を返します。このような要素が見つからない場合は既定値を返します。 <ExtensionAttribute> Public Shared Function FirstOrDefault(Of TSource) (source As IEnumerable(Of TSource), predicate As Func(Of TSource, Boolean)) As TSource
シーケンス(配列やコレクションなど)から一番最初の要素を取得します。
Firsttメソッドは一番最初の要素がなければ(つまりシーケンスにデータがない状態)例外をスローします。
FirstOrDefaultメソッドは一番最初の要素がなければデフォルト値(値型なら初期値、参照型ならnull)を返します。
このメソッドは即時実行されます。
テストデータです。
【C#】
private class Fruit { public string Name { get; set; } public string Rank { get; set; } public decimal Price { get; set; } } var fruits = new List<Fruit>() { new Fruit(){Name = "りんご", Rank = "A" , Price = 1000 }, new Fruit(){Name = "みかん", Rank = "A" , Price = 600 }, new Fruit(){Name = "ぶどう", Rank = "B" , Price = 1200 }, new Fruit(){Name = "りんご", Rank = "B" , Price = 800 }, new Fruit(){Name = "みかん", Rank = "A" , Price = 500 } };【VB】
Private Class Fruit Public Property Name As String Public Property Rank As String Public Property Price As Decimal End Class Dim fruits = New List(Of Fruit)() From { New Fruit() With {.Name = "りんご", .Rank = "A", .Price = 1000}, New Fruit() With {.Name = "みかん", .Rank = "A", .Price = 600}, New Fruit() With {.Name = "ぶどう", .Rank = "B", .Price = 1200}, New Fruit() With {.Name = "りんご", .Rank = "B", .Price = 800}, New Fruit() With {.Name = "みかん", .Rank = "A", .Price = 500} }まずはFirstメソッド、FirstOrDefaultメソッドを使用して、一番最初の要素を取得します。
一番最初の要素は存在するので、どちらも問題なく取得できます。
【C#】
//Firstメソッドを使用して、一番最初の要素を取得 Fruit fruit1 = fruits.First(); //出力 Console.WriteLine(fruit1.Name); //りんご //FirstOrDefaultメソッドを使用して、一番最初の要素を取得 Fruit fruit2 = fruits.FirstOrDefault(); //出力 Console.WriteLine(fruit2.Name); //りんご【VB】
'Firstメソッドを使用して、一番最初の要素を取得 Dim fruit1 As Fruit = fruits.First() '出力 Console.WriteLine(fruit1.Name) 'りんご 'FirstOrDefaultメソッドを使用して、一番最初の要素を取得 Dim fruit2 As Fruit = fruits.FirstOrDefault() '出力 Console.WriteLine(fruit2.Name) 'りんご次にリストのデータを削除して、存在しない一番最初の要素を取得してみます。
FirstメソッドはInvalidOperationException例外がスローされるますが、
FirstOrDefaultメソッドでは、参照型の規定値であるnullが返ります。
【C#】
//リストからデータを削除 fruits.Clear(); //Firstメソッドを使用して、一番最初の要素を取得 //例外InvalidOperationExceptionがスローされる Fruit fruit1 = fruits.First(); //FirstOrDefaultメソッドを使用して、一番最初の要素を取得 //参照型なのでnullが返る Fruit fruit2 = fruits.FirstOrDefault(); //出力 Console.WriteLine(fruit2 == null ? "null" : fruit2.Name); //null【VB】
'リストからデータを削除 fruits.Clear() 'Firstメソッドを使用して、一番最初の要素を取得 '例外InvalidOperationExceptionがスローされる Dim fruit1 As Fruit = fruits.First() 'FirstOrDefaultメソッドを使用して、一番最初の要素を取得 '参照型なのでnullが返る Dim fruit2 As Fruit = fruits.FirstOrDefault() '出力 Console.WriteLine(If(fruit2 Is Nothing, "nothing", fruit2.Name)) 'nothing
Firstメソッド、FirstOrDefaultメソッドには、抽出条件を指定できるオーバーロードメソッドがあります。
抽出条件を指定すると、抽出条件に該当したデータの一番最初の要素を取得できます。
該当するデータがない場合、Firstメソッドは例外をスローし、FirstOrDefaultメソッドは規定値を返します。
【C#】
//Firstメソッドを使用して、抽出条件に該当する一番最初の要素を取得 Fruit fruit1 = fruits.First( itm => itm.Name == "りんご"); //出力 Console.WriteLine("名称={0}, ランク={1}, 値段={2}", fruit1.Name, fruit1.Rank, fruit1.Price.ToString("#,##0")); //名称=りんご, ランク=A, 値段=1,000 //FirstOrDefaultメソッドを使用して、抽出条件に該当する一番最初の要素を取得 Fruit fruit2 = fruits.FirstOrDefault(itm => itm.Name == "みかん"); //出力 Console.WriteLine("名称={0}, ランク={1}, 値段={2}", fruit2.Name, fruit2.Rank, fruit2.Price.ToString("#,##0")); //名称=みかん, ランク=A, 値段=600【VB】
'Firstメソッドを使用して、一番最初の要素を取得 Dim fruit1 As Fruit = fruits.First(Function(itm) itm.Name = "りんご") '出力 Console.WriteLine("名称={0}, ランク={1}, 値段={2}", fruit1.Name, fruit1.Rank, fruit1.Price.ToString("#,##0")) '名称=りんご, ランク=A, 値段=1,000 'FirstOrDefaultメソッドを使用して、一番最初の要素を取得 Dim fruit2 As Fruit = fruits.FirstOrDefault(Function(itm) itm.Name = "みかん") '出力 Console.WriteLine("名称={0}, ランク={1}, 値段={2}", fruit2.Name, fruit2.Rank, fruit2.Price.ToString("#,##0")) '名称=みかん, ランク=A, 値段=600※VBの場合、コンパイルオプションで「Option Infer」をONにし、型推論を有効にしてください。
.Net(VB C#) LINQのメソッド一覧
0 件のコメント:
コメントを投稿