Delen via


Bepalen of een of alle elementen in een reeks voldoen aan een voorwaarde

De All operator retourneert true als alle elementen in een reeks aan een voorwaarde voldoen.

De Any operator retourneert true of een element in een reeks voldoet aan een voorwaarde.

Voorbeeld 1

In het volgende voorbeeld wordt een reeks klanten geretourneerd die ten minste één order hebben. De Where/where component evalueert of true de opgegeven Customer voorwaarde een Order.

var OrdersQuery =
    from cust in db.Customers
    where cust.Orders.Any()
    select cust;
Dim OrdersQuery = _
    From cust In db.Customers _
    Where cust.Orders.Any() _
    Select cust

Voorbeeld 2

De volgende Visual Basic-code bepaalt de lijst met klanten die geen orders hebben geplaatst en zorgt ervoor dat voor elke klant in die lijst een naam van een contactpersoon wordt opgegeven.

Public Sub ContactsAvailable()
    Dim db As New Northwnd("c:\northwnd.mdf")
    Dim result = _
        (From cust In db.Customers _
         Where Not cust.Orders.Any() _
         Select cust).All(AddressOf ContactAvailable)

    If result Then
        Console.WriteLine _
    ("All of the customers who have made no orders have a contact name")
    Else
        Console.WriteLine _
    ("Some customers who have made no orders have no contact name")
    End If
End Sub

Function ContactAvailable(ByVal contact As Object) As Boolean
    Dim cust As Customer = CType(contact, Customer)
    Return (cust.ContactTitle Is Nothing OrElse _
        cust.ContactTitle.Trim().Length = 0)
End Function

Voorbeeld 3

In het volgende C#-voorbeeld wordt een reeks klanten geretourneerd waarvan de orders een ShipCity begin hebben met C. Ook opgenomen in de retourzending zijn klanten die geen orders hebben. (De operator retourneert true standaard All voor een lege reeks.) Klanten zonder orders worden geëlimineerd in de console-uitvoer met behulp van de Count operator.

var custEmpQuery =
    from cust in db.Customers
    where cust.Orders.All(o => o.ShipCity.StartsWith("C"))
    orderby cust.CustomerID
    select cust;

foreach (Customer custObj in custEmpQuery)
{
    if (custObj.Orders.Count > 0)
        Console.WriteLine("CustomerID: {0}", custObj.CustomerID);
    foreach (Order ordObj in custObj.Orders)
    {
        Console.WriteLine("\t OrderID: {0}; ShipCity: {1}",
            ordObj.OrderID, ordObj.ShipCity);
    }
}

Zie ook