2017-07-07 1 views
0

Ich habe wirklich Probleme mit der LINQ-Abfrage unten. Ich habe viel über diesen Fehler geforscht und fast alles, was ich gefunden habe, verweist auf die Verwendung von DbFunctions.TruncateTime(), aber das scheint immer noch nicht für mich zu funktionieren. Ich hoffe, dass jemand einen Blick darauf werfen kann und mir sagen kann, wo ich falsch liege. Alles, was ich versuche zu tun, ist nur den Datumsteil der Datetime zu vergleichen, aber ich bekomme weiterhin die Ausnahme: Der angegebene Typ Member 'Date' wird in LINQ to Entities nicht unterstützt. Es werden nur Initialisierungs-, Entitäts- und Entitätsnavigationseigenschaften unterstützt.DbFunctions.TruncateTime() immer noch produzieren "Typ Mitglied 'Datum' wird nicht unterstützt" Fehler

if (!db.MaintenanceWindows.Any(x => x.Id == Id & 
DbFunctions.TruncateTime(x.BlockedDay) == DateTime.UtcNow.Date & 
x.IsDeleted.Value == false)) 
{ 
... 
} 

TIA

+2

Wie wäre es 'Date' Eigenschaft hier' DateTime.UtcNow.Date' –

+0

Ja, was ist damit? Ist es nicht in Ordnung, dass es da ist? – Nugs

+2

Ich meinte, es verwendet 'Date' -Eigenschaft - genau was Exception Nachricht Ihnen sagt :) Warum Sie es nicht in Variable außerhalb der Abfrage. –

Antwort

0

Es beschwert sich nicht über die DbFunctions.TruncateTime. Es beschwerte sich über die DateTime.UtcNow.Date

Vorschlag A:

if (!db.MaintenanceWindows.Any(x => x.Id == Id && 
    DbFunctions.TruncateTime(x.BlockedDay) == DbFunctions.TruncateTime(DateTime.UtcNow) && 
    x.IsDeleted.Value == false)) 

Vorschlag B:

var utcNow = DateTime.UtcNow.Date; 
if (!db.MaintenanceWindows.Any(x => x.Id == Id && 
    DbFunctions.TruncateTime(x.BlockedDay) == utcNow && 
    x.IsDeleted.Value == false)) 

Auch Sie gehen zu wollen, "logische AND" (&&) in den Ausdruck ein.

Verwandte Themen