首页 > 数据库 > 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 函数允许用默认值代替空值。本文演示如何使用 LINQ 实现类似的结果。

具有可为空列的 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]
登录后复制

通过利用空合并运算符,LINQ 查询可以优雅地处理空值,提供一种方便的方法来替换默认值或根据数据存在或不存在执行其他操作。

以上是如何在 LINQ 中处理 NULL 值:相当于 SQL 的 ISNULL?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板