Sdílet prostřednictvím


Určení, jestli některé nebo všechny prvky v posloupnosti vyhovují podmínce

Operátor All vrátí true , pokud všechny prvky v sekvenci splňují podmínku.

Operátor Any vrátí true , pokud některý prvek v sekvenci splňuje podmínku.

Příklad 1

Následující příklad vrátí posloupnost zákazníků, kteří mají aspoň jednu objednávku. Klauzule Where/where se vyhodnotí, true zda daná Customer klauzule obsahuje .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

Příklad 2

Následující kód jazyka Visual Basic určuje seznam zákazníků, kteří nezařadili objednávky, a zajistí, aby se pro každého zákazníka v tomto seznamu zadalo jméno kontaktu.

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

Příklad 3

Následující příklad jazyka C# vrátí posloupnost zákazníků, jejichž objednávky mají ShipCity začátek na "C". Součástí vrácení jsou také zákazníci, kteří nemají žádné objednávky. (Operátor se podle návrhu All vrátí true pro prázdnou sekvenci.) Zákazníci bez objednávek se eliminují ve výstupu konzoly pomocí operátora Count .

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);
    }
}

Viz také