So entfernen Sie den timeabschnitt aus Nullable <DateTime> in LINQ

Unten ist mein LINQ

IQueryable<ReportMapper> query; query = (from c in entities.tDocumentStatus join d in entities.tTOCStructures on c.DocumentId equals d.DocumentID join e in entities.tUsers on d.LastUpdatedBy equals e.UserUID orderby d.CreatedOn descending where (docMode <= 0 || docModes.Contains(c.StatusId)) && d.FolderType == 2 && d.isDeleted == false && d.ClientID == clientId && (EntityFunctions.TruncateTime(d.CreatedOn) >= startDate.Date && EntityFunctions.TruncateTime(d.CreatedOn) <= endDate.Date) select new ReportMapper() { DocumentName = d.DocumentName, AssignedDate = c.AssignedDate==null? (EntityFunctions.TruncateTime(d.LastUpdatedOn)): (EntityFunctions.TruncateTime(c.AssignedDate)), ReviewStatus = c.tStatu.StatusName, ActionPerformedBy = e.FirstName + " " + e.LastName }); 

Ich muss diese data exportieren. Ich bin in der Notwendigkeit, den kompletten timeabschnitt vom Assigned Date zu entfernen.

Wenn ich mit EntityFunctions.TruncateTime benutze, EntityFunctions.TruncateTime es die time auf 00:00:00

Aber meine Notwendigkeit ist, diesen Teil zu entfernen.

Ich habe folgendes versucht: –

  • (EntityFunctions.TruncateTime(d.LastUpdatedOn)).Value.Date
  • (EntityFunctions.TruncateTime(d.LastUpdatedOn).GetValueOrDefault().Date)
  • (EntityFunctions.TruncateTime(d.LastUpdatedOn)).ToString().Date

Nach Excel exportieren

  public void ExportToExcel() { ExcelPackage excel = new ExcelPackage(); var worksheet = excel.Workbook.Worksheets.Add("Sheet1"); fileName = "Document_Status_Report_" + DateTime.Now.ToString("yyyyMMdHHmmss") + ".xlsx"; worksheet.Cells[1, 1].LoadFromCollection(data, true); using (MemoryStream swObj = new MemoryStream()) { response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; response.AddHeader("Content-Disposition", "attachment; filename=" + fileName + ""); excel.SaveAs(swObj); swObj.WriteTo(response.OutputStream); return; } } 

DateTime immer eine time und Sie können nicht abschneiden oder entfernen time von Datetime Sie nur date dann vorschlagen, um neue String-Eigenschaft in ReportMapper class ReportMapper und nur date String.As in unten Code Ich habe date in ' MM/dd/yyyy 'Format zu AssignedDateString .

 IQueryable<ReportMapper> query; query = (from c in entities.tDocumentStatus join d in entities.tTOCStructures on c.DocumentId equals d.DocumentID join e in entities.tUsers on d.LastUpdatedBy equals e.UserUID orderby d.CreatedOn descending where (docMode <= 0 || docModes.Contains(c.StatusId)) && d.FolderType == 2 && d.isDeleted == false && d.ClientID == clientId && (EntityFunctions.TruncateTime(d.CreatedOn) >= startDate.Date && EntityFunctions.TruncateTime(d.CreatedOn) <= endDate.Date) select new ReportMapper() { DocumentName = d.DocumentName, AssignedDate = c.AssignedDate==null? (EntityFunctions.TruncateTime(d.LastUpdatedOn)): (EntityFunctions.TruncateTime(c.AssignedDate)), ReviewStatus = c.tStatu.StatusName, ActionPerformedBy = e.FirstName + " " + e.LastName AssignedDateString= c.AssignedDate==null? (d.LastUpdatedOn.ToString("MM/dd/yyyy")): (c.AssignedDate.ToString("MM/dd/yyyy")), }); 

Verwenden Sie .Value.Date wie Sie bereits versucht haben. Niemals strings

Ihr Problem ist nicht die time Teil (@PanagiotisKanavos erklärt, dass) aber das Format auf die Zellen in Excel angewendet. Just anpassen, um nur das datestext anzuzeigen.