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