다음을 통해 공유


방법: 시퀀스의 요소 중 하나 또는 모든 요소가 조건에 맞는지 확인(LINQ to SQL)

업데이트: November 2007

시퀀스의 모든 요소가 조건을 만족하면 All<TSource> 연산자에서는 true를 반환합니다.

시퀀스의 모든 요소가 조건을 만족하면 Any 연산자에서는 true를 반환합니다.

예제

다음 예제에서는 적어도 하나의 주문이 있는 고객의 시퀀스를 반환합니다. 지정된 Customer에게 Order가 있으면 Where/where 절은 true로 평가됩니다.

Dim OrdersQuery = _
    From cust In db.Customers _
    Where cust.Orders.Any() _
    Select cust
var OrdersQuery =
    from cust in db.Customers
    where cust.Orders.Any()
    select cust;

다음 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

다음 C# 예제에서는 "C"로 시작하는 ShipCity가 있는 주문의 고객 시퀀스를 반환합니다. 또한 반환에는 주문이 없는 고객도 포함됩니다. 디자인에 따라 All<TSource> 연산자는 빈 시퀀스에 대해 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: {0}", custObj.CustomerID);
    foreach (Order ordObj in custObj.Orders)
    {
        Console.WriteLine("\t OrderID: {0}; ShipCity: {1}",
            ordObj.OrderID, ordObj.ShipCity);
    }
}

참고 항목

기타 리소스

쿼리 예제(LINQ to SQL)