[LINQ] LINQ to Objects(Anyメソッド)

Anyメソッドを使用すると、指定した条件値が含まれるかどうかを調べることができます。

Anyメソッドに条件を指定すると、満たされているデータがある場合はtrueを返します。

例として、氏名、年齢、体重のデータを持つ3人分のデータを作成して、その中から体重が55kg未満、年齢が28歳以下のデータが含まれているかどうかを調べてみます。

VBの例

Public Class Person
    Public Property Name As String
    Public Property Age As Integer
    Public Property Weight
End Class


Private Sub CheckAgeWeight()
    Dim persons As Person() = {
      New Person() With {.Name = "HIRO", .Age = 42, .Weight = 60},
      New Person() With {.Name = "KAZU", .Age = 38, .Weight = 50},
      New Person() With {.Name = "RUI", .Age = 28, .Weight = 45}}


    Dim bCondition As Boolean = persons.Any(Function(p) p.Weight < 55 AndAlso p.Age <= 28)
    Console.WriteLine(String.Format("体重が55kg未満で年齢が28歳以下の人が{0}", IIf(bCondition, "いる", "いない")))
End Sub

C#の例

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public int Weight { get; set; }
}

private void CheckAgeWeight
{
    Person[] persons = {
                   new Person {Name = "HIRO", Age = 42, Weight= 60},
                   new Person {Name = "KAZU", Age = 38, Weight= 50},
                   new Person {Name = "RUI", Age = 28, Weight = 45}
               };

    bool bCondition =
        persons.Any(p => p.Weight < 55 && p.Age <= 28);

    Console.WriteLine("体重が55kg未満で年齢が28歳以下の人が{0}", bCondition ? "いる": "いない");

}

上の例ではAnyメソッドの引数に p => p.Weight < 55 && p.Age <= 28 を指定しています。

データにはWeight(体重)が55kg未満の人が2人、Age(年齢)が28歳以下の人が1人いるので、この条件値は満たされれ、bConditionにはtrueが代入されます。

結果として、「体重が55kg未満で年齢が28歳以下の人がいる」が出力されます。

 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です