Freigeben über


Operatoren, die NULL-Werte zulassen (F#)

Auf NULL festlegbare Operatoren sind binäre Arithmetik oder Vergleichsoperatoren, die NULL-Werte zulassen oder die Arbeit an einem arithmetischen Typen beider Seiten. Typen, die NULL-Werte zulassen, häufig auftreten, wenn Sie mit Daten aus Quellen, z. B. Datenbanken arbeiten, die NULL-Werte anstelle der Werte zulassen. Auf NULL festlegbare Operatoren werden häufig in Abfrageausdrücken verwendet. Neben den arithmetischen Operatoren für NULL-Werte zulässt und Vergleich Konvertierungsoperatoren können verwendet werden, um zwischen Typen, die NULL-Werte zulassen zu konvertieren. Darüber hinaus sind bestimmte Versionen, die NULL-Werte zulassen. Abfrageoperatoren

Tabelle mit Operatoren, die NULL-Werte zulassen

In der folgenden Tabelle werden die Operatoren aufgelistet, die NULL-Werte zulassen, die in der Programmiersprache F# unterstützt werden.

Auf NULL festlegbare auf links

Auf NULL festlegbare auf Rechts

Beide Seiten NULL-Werte zulassen

? >=

>=?

? >=?

? >

>?

? >?

? <=

<=?

? <=?

? <

<?

? <?

?=

=?

?=?

? <>

<>?

? <>?

?+

+?

?+?

?-

-?

?-?

?*

*?

?*?

?/

/?

?/?

? %

%?

? %?

Hinweise

Die NULL-Werte zulassen NullableOperators-Operatoren werden im Modul im Namespace Microsoft.FSharp.Linqenthalten. Der Typ für NullableDaten sind, die NULL-Werte zulassen.

Bei Abfrageausdrücken können Typen, die NULL-Werte zulassen, wenn es Daten von einer Datenquelle auswählen, die NULL-Werte anstelle der Werte zulässig. In einer SQL Server-Datenbank verfügt jede Datenspalte in einer Tabelle ein Attribut, das angibt, ob NULL-Werte zulässig sind. Wenn NULL-Werte zugelassen sind, können die Daten, die von der Datenbank zurückgegebene NULL-Werte enthalten usw., die nicht durch einen Grunddatentyp float, wie intdargestellt werden können. Daher werden die Daten als System.Nullable<int> anstelle intund System.Nullable<float> anstelle floatzurückgegeben. Der Wert kann ein Nullable-Objekt abgerufen werden, indem die Value-Eigenschaft verwendet, und Sie können ermitteln, ob ein Nullable-Objekt über einen Wert verfügt, indem Sie die HasValue-Methode aufruft. Eine weitere nützliche Methode ist die GetValueOrDefault-Methode, die es Ihnen ermöglicht, den Wert oder einen Standardwert des entsprechenden Typs abzurufen. Der Standardwert ist eine Form von „null " - Wert, z. B. 0, 0.0 oder false.

Typen, die NULL-Werte zulassen, werden auf die nicht auf NULL festlegbare Typen mithilfe der üblichen Konvertierungsoperatoren wie int oder floatkonvertiert werden. Die zu konvertierende ist auch möglich, ein Typ, der NULL-Werte zulässt, in einen anderen Typ, der NULL-Werte zulässt, indem die Konvertierungsoperatoren für Typen, die NULL-Werte zulassen verwendet. Die geeigneten Konvertierungsoperatoren haben den gleichen Namen wie die Standardeinstellung, sind jedoch in einem separaten Modul, das Auf NULL festlegbare Modul im Microsoft.FSharp.Linq-Namespace. Normalerweise öffnen Sie diesen Namespace beim Arbeiten mit Abfrageausdrücken. In diesem Fall können Sie die NULL-Werte zulassen Konvertierungsoperatoren verwenden, indem Sie das Präfix Nullable. dem entsprechenden Operator, wie im folgenden Code gezeigt.

open Microsoft.Fsharp.Linq
let nullableInt = new System.Nullable<int>(10)
// Use the Nullable.float conversion operator to convert from one nullable type to another nullable type.
let nullableFloat = Nullable.float nullableInt
// Use the regular non-nullable float operator to convert to a non-nullable float.
printfn "%f" (float nullableFloat)

Die Ausgabe lautet 10.000000.

Abfrageoperatoren auf Datenfelder, die NULL-Werte zulassen, z sumByNullable, befinden sich auch für die Verwendung in Abfrageausdrücken. Die Abfrageoperatoren für Typen, die keine NULL-Werte zulassen, sind nicht mit Typen, die NULL-Werte zulassen TYPE-kompatibel, sodass Sie die auf NULL festlegbare Version des entsprechenden Abfrageoperators verwenden, wenn Sie mit Datenwerten, die NULL-Werte zulassen. Weitere Informationen finden Sie unter Abfrageausdrücke (F#).

Das folgende Beispiel veranschaulicht die Verwendung von NULL-Werte zulassen Operatoren in einem F#-Abfrageausdruck an. Die erste Abfrage zeigt, wie Sie eine Abfrage ohne einen Operator, der NULL-Werte zulässt schreiben würden. Die zweite Abfrage wird eine entsprechende Abfrage, die einen Operator, der NULL-Werte zulässt. Für den vollständigen Kontext enthalten, wie die Datenbank eingerichtet werden, um diesen Beispielcode finden Sie unter Exemplarische Vorgehensweise: Zugreifen auf eine SQL-Datenbank mithilfe von Typanbietern (F#).

open System
open System.Data
open System.Data.Linq
open Microsoft.FSharp.Data.TypeProviders
open Microsoft.FSharp.Linq

[<Generate>]
type dbSchema = SqlDataConnection<"Data Source=MYSERVER\INSTANCE;Initial Catalog=MyDatabase;Integrated Security=SSPI;">
let db = dbSchema.GetDataContext()

query {
        for row in db.Table2 do
        where (row.TestData1.HasValue && row.TestData1.Value > 2)
        select row
      }
|> Seq.iter (fun row -> printfn "%d %s" row.TestData1.Value row.Name)

query {
        for row in db.Table2 do
        // Use a nullable operator ?>
        where (row.TestData1 ?> 2)
        select row
      }
|> Seq.iter (fun row -> printfn "%d %s" (row.TestData1.GetValueOrDefault()) row.Name)

Siehe auch

Referenz

Nullable