Megosztás a következőn keresztül:


Annak meghatározása, hogy a sorozat bármely vagy minden eleme megfelel-e egy feltételnek

Az All operátor akkor ad true vissza értéket, ha egy sorozat összes eleme megfelel egy feltételnek.

Az Any operátor akkor ad true vissza értéket, ha a sorozat bármely eleme megfelel egy feltételnek.

1. példa

Az alábbi példa olyan ügyfelek sorozatát adja vissza, amelyek legalább egy megrendeléssel rendelkeznek. A Where/where záradék kiértékeli, hogy true az adottnak Customer van-e .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

2. példa

A következő Visual Basic-kód határozza meg azoknak a vevőknek a listáját, akik nem adtak le rendeléseket, és biztosítja, hogy a listában szereplő összes ügyfél számára meg legyen adva egy partnernév.

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

3. példa

Az alábbi C#-példa azoknak az ügyfeleknek a sorozatát adja vissza, akiknek a rendelései ShipCity "C" kezdetűek. A visszaküldés tartalmazza azokat az ügyfeleket is, akik nem rendelkeznek megrendeléssel. (Terv szerint az All operátor üres sorozatot ad true vissza.) A rendelés nélküli ügyfelek az operátor használatával megszűnnek a Count konzol kimenetében.

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

Lásd még