VB.NET and LINQ – Filter elements from object collection with Logical Operators

Here’s a sample code snippet demonstrating how to filter elements from a list of objects using the where clause using LINQ in VB.NET. This sample gets all the employees who salary is greater than 20000 GBP and age is greater than 22.

How to Filter Employees List whose salary is greater than 20000 GBP and age is greater than 22 using LINQ in VB.NET ?

Namespace AbundantcodeVisualBasicSample
    Class Program
        Public Shared Sub Main(args As String())
            Dim employees As New List(Of Employee)()
            employees.Add(New Employee() With { _
                .Name = "Michael", _
                .Age = 55, _
                .Salary = 80000 _
            })
            employees.Add(New Employee() With { _
                 .Name = "Steve", _
                 .Age = 23, _
                 .Salary = 19000 _
            })
            employees.Add(New Employee() With { _
                 .Name = "John", _
                 .Age = 55, _
                 .Salary = 23000 _
            })
           ' LINQ query demonstrating the usage of Logical operators in the Where clause.
            Dim output = From m In employees Where m.Salary > 20000 AndAlso m.Age > 22

            Debug.WriteLine("Employees whose salary is greater than 20000 pounds and age > 22")
            For Each item As Employee In output
                Debug.WriteLine(item.Name)
            Next
        End Sub
    End Class
    Class Employee
        Public Property Name() As String
            Get
                Return m_Name
            End Get
            Set
                m_Name = Value
            End Set
        End Property
        Private m_Name As String
        Public Property Age() As Integer
            Get
                Return m_Age
            End Get
            Set
                m_Age = Value
            End Set
        End Property
        Private m_Age As Integer
        Public Property Salary() As Decimal
            Get
                Return m_Salary
            End Get
            Set
                m_Salary = Value
            End Set
        End Property
        Private m_Salary As Decimal
    End Class
End Namespace

Output

Employees whose salary is greater than 20000 pounds and age > 22

Michael

John