Rumah > pangkalan data > tutorial mysql > Bagaimana Mengendalikan Nilai NULL dalam LINQ: Setara dengan ISNULL SQL?

Bagaimana Mengendalikan Nilai NULL dalam LINQ: Setara dengan ISNULL SQL?

DDD
Lepaskan: 2024-12-30 05:27:10
asal
276 orang telah melayarinya

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

LINQ Equivalent of SQL's ISNULL

Dalam SQL, fungsi ISNULL membenarkan seseorang untuk menggantikan nilai lalai sebagai ganti nilai nol. Artikel ini menunjukkan cara untuk mencapai hasil yang serupa menggunakan LINQ.

Pertanyaan LINQ dengan Lajur Boleh Null

Pertimbangkan pertanyaan LINQ berikut:

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
        };
Salin selepas log masuk

Dalam pertanyaan ini, aa mewakili baris daripada HandheldDevInfos yang mungkin wujud atau tidak untuk sesuatu aset. Selain itu, lajur xx.Online ialah jenis bit yang tidak boleh dibatalkan.

Menetapkan Nilai Null kepada Palsu

Untuk menetapkan nilai nol untuk xx.Online kepada false, kami boleh menggunakan operator penggabungan null (??). Pertanyaan yang dikemas kini akan kelihatan seperti ini:

select new {
    AssetID = x.AssetID,
    Status = aa == null ? false : aa.Online;
}
Salin selepas log masuk

Dalam pertanyaan yang disemak ini, jika aa adalah batal, sifat Status akan ditetapkan kepada palsu. Jika tidak, ia akan ditetapkan kepada nilai aa.Online.

T-SQL Contoh dan Setara

Untuk menggambarkan pendekatan ini dalam konteks yang lebih besar, pertimbangkan perkara berikut Pertanyaan contoh 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);
            }
        }
Salin selepas log masuk

Pertanyaan T-SQL yang setara, yang menggunakan pertanyaan serupa pendekatan, ditunjukkan di bawah:

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]
Salin selepas log masuk

Dengan menggunakan operator penggabungan nol, pertanyaan LINQ boleh mengendalikan nilai nol dengan elegan, menyediakan cara yang mudah untuk menggantikan nilai lalai atau melaksanakan operasi lain berdasarkan kehadiran atau ketiadaan data.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Nilai NULL dalam LINQ: Setara dengan ISNULL SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan