> 데이터 베이스 > MySQL 튜토리얼 > LINQ에서 NULL 값을 처리하는 방법: SQL의 ISNULL과 동일합니까?

LINQ에서 NULL 값을 처리하는 방법: SQL의 ISNULL과 동일합니까?

DDD
풀어 주다: 2024-12-30 05:27:10
원래의
277명이 탐색했습니다.

How to Handle NULL Values in LINQ: The Equivalent of SQL's ISNULL?

SQL의 ISNULL에 해당하는 LINQ

SQL에서 ISNULL 함수를 사용하면 null 값 대신 기본값을 대체할 수 있습니다. 이 문서에서는 LINQ를 사용하여 유사한 결과를 얻는 방법을 보여줍니다.

Nullable 열이 있는 LINQ 쿼리

다음 LINQ 쿼리를 고려하세요.

var hht = from x in db.HandheldAssets
        join a in db.HandheldDevInfos on x.AssetID equals a.DevName into DevInfo
        from aa in DevInfo.DefaultIfEmpty()
        select new
        {
        AssetID = x.AssetID,
        Status = xx.Online
        };
로그인 후 복사

이 쿼리에서 aa는 특정 항목에 대해 존재할 수도 있고 존재하지 않을 수도 있는 HandheldDevInfos의 행을 나타냅니다. 자산. 또한 xx.Online 열은 null을 허용하지 않는 비트 유형입니다.

Null 값을 False로 설정

xx.Online의 null 값을 false로 설정하려면 널 병합 연산자(??)를 사용할 수 있습니다. 업데이트된 쿼리는 다음과 같습니다.

select new {
    AssetID = x.AssetID,
    Status = aa == null ? false : aa.Online;
}
로그인 후 복사

이 수정된 쿼리에서 aa가 null인 경우 Status 속성은 false로 설정됩니다. 그렇지 않으면 aa.Online 값으로 설정됩니다.

예제 및 동등한 T-SQL

이 접근 방식을 더 큰 맥락에서 설명하려면 다음을 고려하십시오. Northwind 샘플 쿼리:

        using(var ctx = new DataClasses1DataContext())
        {
            ctx.Log = Console.Out;
            var qry = from boss in ctx.Employees
                      join grunt in ctx.Employees
                          on boss.EmployeeID equals grunt.ReportsTo into tree
                      from tmp in tree.DefaultIfEmpty()
                      select new
                             {
                                 ID = boss.EmployeeID,
                                 Name = tmp == null ? "" : tmp.FirstName
                        };
            foreach(var row in qry)
            {
                Console.WriteLine("{0}: {1}", row.ID, row.Name);
            }
        }
로그인 후 복사

유사한 접근 방식을 사용하는 동등한 T-SQL 쿼리가 표시됩니다. 아래:

SELECT [t0].[EmployeeID] AS [ID],
    (CASE
        WHEN [t2].[test] IS NULL THEN CONVERT(NVarChar(10),@p0)
        ELSE [t2].[FirstName]
     END) AS [Name]
FROM [dbo].[Employees] AS [t0]
LEFT OUTER JOIN (
    SELECT 1 AS [test], [t1].[FirstName], [t1].[ReportsTo]
    FROM [dbo].[Employees] AS [t1]
    ) AS [t2] ON ([t0].[EmployeeID]) = [t2].[ReportsTo]
로그인 후 복사

Null 병합 연산자를 활용하면 LINQ 쿼리에서 Null 값을 우아하게 처리할 수 있어 기본값을 대체하거나 데이터 유무에 따라 다른 작업을 수행하는 편리한 방법을 제공합니다.

위 내용은 LINQ에서 NULL 값을 처리하는 방법: SQL의 ISNULL과 동일합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿