2016-05-12 3 views
0

Ich stoße in Schwierigkeiten, wenn ich mehr über das Entity Framework und LINQ lerne.VB.NET LINQ-Methode Syntax erlaubt implizite Konvertierungen von 'Boolean?' zu 'Boolean'

Ich versuche, Werte aus einer Datenbank zu finden, die einem bestimmten Datum entsprechen.

Ich habe 1.250.000 Einträge und 36300 von ihnen sind von einem bestimmten Datum.

Ich verwende bis jetzt ganz normales SQL und möchte LINQ üben, um meine Anwendung so umzuformulieren, dass sie mit dem EF funktioniert.

Können Sie sagen, wo mein Fehler ist?

Die zweite Art und Weise funktioniert, aber braucht viel Zeit ~ 15 sec

enter image description here

+2

Nächster Fehler: 'ToList' anhängen, um eine Liste zu erstellen. Nach dem anderen, versuchen: 'Where (Funktion (d) d.ExportedDate.HasValue AndAlso d.ExportedDate.Value = ExportDate)' –

+0

Sie könnten dies als Antwort und erklären Sie mir, warum Ihr Code ohne Probleme funktioniert, wenn Sie Zeit haben . Ich würde dies als Antwort markieren. Danke! :) –

+0

Diese Warnung ist nicht speziell für LINQ. – user6144226

Antwort

3

Versuchen:

Where(Function(d) d.ExportedDate.HasValue AndAlso d.ExportedDate.Value = exportDate) 

Auf diese Weise können Sie nur Zeilen auswählen, wo die Spalte von -zulässige ExportedDate nicht null ist und wo es dem gegebenen Datum entspricht. ExportedDate.Value gibt Date im Gegensatz zu d.ExportedDate zurück, was eine Date? ist. Wenn Sie eine Date? mit einer Date vergleichen, erhalten Sie eine als Ergebnis (nicht eine Boolean), weil Nothing bedeutet undefined.

Dies ist ein interessanter Unterschied zu C#, bezogen werden: Why is there a difference in checking null against a value in VB.NET and C#?

den nächsten Fehler zu beheben: anhängen ToList eine Liste zu erstellen.

+0

Vielen Dank für die Klärung des Datums? und Boolean ?. Ich habe noch nie davon gehört. Das wird mir in Zukunft helfen. Macht jetzt völlig Sinn. +1 –