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 .
Wie variiert der Wert für BiddingToCloseIn ist? Ist es die Anzahl der verbleibenden Tage? Stunden usw.? – MiltoxBeyond
Ist 'BiddingToCloseIn' ein' TimeSpan'? – Jace
Ja Bieten ist ein timeSpan, aber ist auf eine seltsame Weise zugewiesen. Wird die Frage für Sie jetzt aktualisieren – RickyTamma