LINQ-Äquivalent von SQLs ISNULL
In SQL ermöglicht die ISNULL-Funktion, einen Nullwert durch einen Standardwert zu ersetzen. In diesem Artikel wird gezeigt, wie Sie mit LINQ ein ähnliches Ergebnis erzielen.
LINQ-Abfrage mit einer Nullable-Spalte
Betrachten Sie die folgende LINQ-Abfrage:
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 };
In dieser Abfrage stellt aa die Zeile von HandheldDevInfos dar, die für ein bestimmtes Asset vorhanden sein kann oder nicht. Darüber hinaus ist die Spalte „xx.Online“ ein nicht nullbarer Bittyp.
Nullwerte auf „False“ setzen
Um Nullwerte für „xx.Online“ auf „false“ zu setzen, haben wir kann den Nullkoaleszenzoperator (??) verwenden. Die aktualisierte Abfrage würde wie folgt aussehen:
select new { AssetID = x.AssetID, Status = aa == null ? false : aa.Online; }
Wenn aa in dieser überarbeiteten Abfrage null ist, wird die Status-Eigenschaft auf „false“ gesetzt. Andernfalls wird es auf den Wert von aa.Online gesetzt.
Beispiel und äquivalentes T-SQL
Um diesen Ansatz in einem größeren Kontext zu veranschaulichen, betrachten Sie Folgendes Northwind-Beispielabfrage:
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); } }
Die entsprechende T-SQL-Abfrage, die einen ähnlichen Ansatz verwendet, wird angezeigt unten:
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]
Durch die Verwendung des Null-Koaleszenzoperators können LINQ-Abfragen Nullwerte elegant verarbeiten und bieten so eine bequeme Möglichkeit, Standardwerte zu ersetzen oder andere Operationen basierend auf dem Vorhandensein oder Fehlen von Daten durchzuführen.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit NULL-Werten in LINQ um: Das Äquivalent von SQLs ISNULL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!