Home > Back-end >  Date filtering in Linq
Date filtering in Linq

Time:01-15

Hi I'm trying to filter my result with a date.

What I tried so far:

var lastYear = (DateTime.Now.Year) - 1;
var salesLastYear = _documentService.GetDocuments(
              d => d.DocumentTypeId == saleDocumentId &&
              d.EffectiveOnUtc.Contains(lastYear))
             .Select(d => d.Id).ToList();

var salesLastYear = _documentService.GetDocuments(
              d => d.DocumentTypeId == saleDocumentId &&
             (d.EffectiveOnUtc.Year == lastYear))
             .Select(d => d.Id).ToList();

Both gave no errors in visual studio, but did raise an exeption during execution. Also tried to convert both the values to a string, but that also failed.

CodePudding user response:

Working on the assumption that your EffectiveOnUtc is a DateTime, and you want to filter to records within the previous calendar year:

int lastYear = DateTime.Now.Year - 1;
DateTime minDate = new DateTime(lastYear, 1, 1);
DateTime maxDate = minDate.AddYears(1);

var salesLastYear = _documentService.GetDocuments(
    d => d.DocumentTypeId == saleDocumentId 
    && d.EffectiveOnUtc >= minDate
    && d.EffectiveOnUtc < maxDate)
    Select(d => d.Id).ToList();

CodePudding user response:

is EffectiveOnUTC nullable? What is your service doing? What is the exception?

  •  Tags:  
  • Related