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 중국어 웹사이트의 기타 관련 기사를 참조하세요!