Determinare se alcuni o tutti gli elementi di una sequenza soddisfano una condizioneDetermine if Any or All Elements in a Sequence Satisfy a Condition

L'operatore All restituisce true se tutti gli elementi in una sequenza soddisfanno una condizione.The All operator returns true if all elements in a sequence satisfy a condition.

L'operatore Any restituisce true se un elemento qualsiasi in una sequenza soddisfa una condizione.The Any operator returns true if any element in a sequence satisfies a condition.

EsempioExample

Nell'esempio seguente viene restituita una sequenza di clienti con almeno un ordine.The following example returns a sequence of customers that have at least one order. Il Where / where clausola restituisce true se il dato Customer presenti Order.The Where/where clause evaluates to true if the given Customer has any 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

EsempioExample

Il codice Visual Basic seguente determina l'elenco di clienti che non hanno effettuato ordini e assicura che per ogni cliente nell'elenco venga fornito un nome di contatto.The following Visual Basic code determines the list of customers who have not placed orders, and ensures that for every customer in that list, a contact name is provided.

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

EsempioExample

Nell'esempio C# seguente viene restituita una sequenza di clienti i cui ordini contengono un elemento ShipCity che inizia con la lettera specificata.The following C# example returns a sequence of customers whose orders have a ShipCity beginning with "C". Nei risultati vengono restituiti anche i clienti che non hanno effettuato ordini.Also included in the return are customers who have no orders. In base alla progettazione, l'operatore All restituisce true per una sequenza vuota. I clienti senza ordini vengono eliminati nell'output della console usando l'operatore Count.(By design, the All operator returns true for an empty sequence.) Customers with no orders are eliminated in the console output by using the 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);
    }
}

Vedere ancheSee Also

Esempi di queryQuery Examples