Ricerca tra due date in LINQ to Entity?

Ho un esempio in SQL come utilizzare la stessa logica, Linq to Entity?

SELECT * FROM TABLE WHERE DATE BETWEEN STARTDATE AND ENDDATE 
InformationsquelleAutor Hrom | 2010-04-29

 

2 Replies
  1. 32

    Sto assumendo C#.

    DateTime startDate=bla;
    DateTime endDate=blabla;
    using(var db=new MyDataContext())
    {
        var filteredData=db.TABLE.Where(t => t.DATE > startDate && t.DATE < endDate);
        //...
    }
    • Utilizzare >= e <= per dare gli stessi risultati BETWEEN, però.
    • Io non uso mai TRA esattamente per questo motivo. Io preferisco l’esplicitazione dell’altra forma.
    • Per me questo non ha lavorato ottenuto LINQ to Entity errore. Sto anche utilizzando DBContext
    • Anche l’aggiunta di = saltando tutti i record per endDate. U può indovinare..? perché succede questo..?
    • Per ottenere effettivamente i valori tra le due date, penso che in realtà vorrei t.DATE >= startDate && t.DATE < endDate, dove endDate ha avuto un giorno in più aggiunto. Altrimenti non si ottiene nulla per l’ultima data (anche perchè la data è in realtà 12 in quel giorno, in modo minore o uguale a 12 certa data, in realtà, non si ottiene nulla durante, solo prima di esso.)
    • Grazie @Sahuagin. Ho acceso fromo .NETTO di NodeJs ora. Ma credo che sarebbe un lavoro sicuro. Comunque, apprezzo la tua risposta, anche dopo quasi 2.5 yr. 😀

  2. 10

    Si desidera essere incluso data di inizio, ma esclusivo la data di fine. Questo perché un DateTime utilizzato come una data è davvero l’inizio di quel giorno, e non si estende alla fine della giornata.

    //dates that are inclusive on the date range
    var startDate = new DateTime(2016, 1, 1);
    var endDate = new DateTime(2016, 12, 31);
    
    ...
    
    //WRONG: this will ignore data on the last day
    .Where(obj => obj.StartDate >= startDate && obj.EndDate <= endDate)
    
    //RIGHT: this will include the last day
    var endDateExclusive = endDate.AddDays(1);
    
    ...
    
    .Where(obj => obj.StartDate >= startDate && obj.EndDate < endDateExclusive)

    Anche se si utilizza specifici DateTime valori, può ancora essere importante utilizzare >= e <, piuttosto che >= e <= o > e <.

    Se si utilizzano entrambi >= e <= segni, poi due intervalli di date da X a Y e da Y a Z, entrambi includono i record che corrispondono esattamente Y. a Seconda delle vostre esigenze potrebbe essere un difetto grave per includere i record in entrambi gli intervalli di date. Allo stesso modo, se si utilizza > e <, si sarebbe invece escludere record da entrambi gli intervalli di date che corrispondono esattamente Y.

    • Questa soluzione mi ha dato i risultati corretti.

Lascia un commento