다음을 통해 공유


방법: 쿼리 식의 Null 값 처리(C# 프로그래밍 가이드)

업데이트: 2007년 11월

이 예제에서는 소스 컬렉션에 포함될 수 있는 null 값의 처리 방법을 보여 줍니다. IEnumerable<T>과 같은 개체 컬렉션에는 값이 null인 요소가 포함될 수 있습니다. 소스 컬렉션이 null이거나 값이 null인 요소가 소스 컬렉션에 들어 있고 쿼리에서 null 값을 처리하지 않는 경우, 쿼리를 실행하면 NullReferenceException이 throw됩니다.

예제

다음 예제와 같이 null 참조 예외가 발생하지 않도록 코드를 작성할 수 있습니다.

var query1 =
    from c in categories
    where c != null
    join p in products on c.ID equals
        (p == null ? null : p.CategoryID)
    select new { Category = c.Name, Name = p.Name };

위의 예제에서 where 절은 범주 시퀀스에서 null 요소를 모두 필터링하여 제외합니다. 이 기술은 조인 절의 null 검사 기능과는 관계없습니다. 이 예제에서 null을 사용하는 조건 식은 Products.CategoryID가 int? 형식(**Nullable<int>**의 축약형)이기 때문에 제대로 작동합니다.

조인 절에서 비교 키 중 하나만 nullable 값 형식인 경우에는 쿼리 식에서 다른 키를 nullable 형식으로 캐스팅할 수 있습니다. 다음 예제에서는 EmployeeID 열에 int? 형식의 값이 들어 있다고 가정합니다.

void TestMethod(Northwind db)
{
    var query =
        from o in db.Orders
        join e in db.Employees
            on o.EmployeeID equals (int?)e.EmployeeID
        select new { o.OrderID, e.FirstName };
}

참고 항목

작업

LINQ to Northwind 샘플

개념

LINQ 쿼리 식(C# 프로그래밍 가이드)

참조

nullable 형식(C# 프로그래밍 가이드)

Nullable<T>