次の方法で共有


シーケンス内の任意の要素またはすべての要素が条件を満たすかどうかを判断する

All演算子は、シーケンス内のすべての要素が条件を満たす場合にtrueを返します。

Any演算子は、シーケンス内の要素が条件を満たす場合にtrueを返します。

例 1

次の例では、少なくとも 1 つの注文を持つ顧客のシーケンスを返します。 指定したCustomerOrderがある場合、Where/where句はtrueに評価されます。

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

次の Visual Basic コードは、注文していない顧客の一覧を決定し、その一覧内のすべての顧客に対して連絡先名が指定されていることを確認します。

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

次の C# の例では、注文が "C" で始まる ShipCity を持つ一連の顧客を返します。 返品には、注文のない顧客も含まれます。 (仕様上、 All 演算子は空のシーケンスの true を返します)。注文がないお客様は、 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: {custObj.CustomerID}");
    foreach (Order ordObj in custObj.Orders)
    {
        Console.WriteLine($"\t OrderID: {ordObj.OrderID}; ShipCity: {ordObj.ShipCity}");
    }
}

こちらもご覧ください