Linq 中的日期过滤

Date filtering in Linq

您好,我正在尝试使用日期过滤我的结果。

到目前为止我尝试了什么:

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();

两者都没有在 visual studio 中给出错误,但在执行期间确实引发了异常。 还尝试将这两个值都转换为字符串,但也失败了。

假设您的 EffectiveOnUtcDateTime,并且您想过滤到上一个日历年内的记录:

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();