2016-07-27 8 views
0

referenziert wird Ich verstehe, dass LINQ TimeSpan nicht verwenden kann, jedoch möchte ich eine WHERE-Bedingung für eine DateTime mit einem zusätzlichen TimeSpan ausführen. Mein Problem ist jedoch, dass der TimeSpan zum ersten Mal innerhalb der Abfrage referenziert wird. Ich habe versucht, es im Gedächtnis zu tun, aber das verursacht auch Probleme.Behandlung von TimeSpan in LINQ, wo TimeSpan zuerst in Abfrage

entiteis ist vom Typ:

System.Data.Entity.IDbSet<CharterRequestDTO> 

Und biddingToCloseIn ist definiert als:

[NotMapped] 
public TimeSpan BiddingToCloseIn 
{ 
    get { return TimeSpan.FromTicks(BiddingToCloseInTicks); } 
    set { BiddingToCloseInTicks = value.Ticks; } 
} 

Normal:

var charterRequestDtoIds = 
    (from e in entities 
     where e.ClientId == clientId 
     && e.Status != TrackingState.Void 
     && DateTime.Now < e.CreatedAt.AddDays(30).Add(e.BiddingToCloseIn) 
    select e.Id); 

Speicher:

var charterRequestDtoIds = 
    from e in entities.Where(e => e.ClientId == clientId 
    && e.Status != TrackingState.Void 
    && DateTime.Now < e.CreatedAt.AddDays(30).Add(e.BiddingToCloseIn)) 
    select e.Id; 

Fehler für beide:

System.NotSupportedException: LINQ to Entities erkennt nicht die Methode 'Add System.DateTime (System.TimeSpan)' Methode, und diese Methode nicht in einen Laden Ausdruck übersetzt werden kann .

+0

Wie variiert der Wert für BiddingToCloseIn ist? Ist es die Anzahl der verbleibenden Tage? Stunden usw.? – MiltoxBeyond

+0

Ist 'BiddingToCloseIn' ein' TimeSpan'? – Jace

+0

Ja Bieten ist ein timeSpan, aber ist auf eine seltsame Weise zugewiesen. Wird die Frage für Sie jetzt aktualisieren – RickyTamma

Antwort

0

Statt eine TimeSpan hinzuzufügen, fügen Millisekunden (oder Sekunden, Minuten, nach der Präzision Sie benötigen.)

AddDays(30).AddMilliseconds(e.BiddingToCloseIn.TotalMilliseconds) 
+0

Hallo danke, das hat funktioniert. Für jeden, der diese Antwort in Zukunft liest, kann dies jedoch nur mit der In-Memory-Methode durchgeführt werden, da SQL AddDays nicht erkennt – RickyTamma

Verwandte Themen