Crystal Report - оператор выбора Linq находит пустые поля - PullRequest
1 голос
/ 16 февраля 2020

Я пытаюсь использовать запрос Linq для пользовательского отчета Crystal в папке MyReports. Тем не менее, механизм отчетов Crystal жалуется на нулевые значения.

Мне удалось заполнить пустое поле для серийного номера, где он может быть нулевым, но DateTime является для меня большей проблемой.

I пробовал:

InspectionDate = subpat.InspectionDate == null ? "" : subpat.InspectionDate,

Но ошибка такова:

Type of conditional expression cannot be determined because there is no implicit conversion between 'string' and 'System.DateTime?' 

Я бы просто хотел получить пустой результат, если ноль.

Мой запрос:

        var today = DateTime.Now.Date;
        var tomorrow = today.AddDays(30);


        var dateresult = db.ClinicalINSs.GroupBy(d => d.ClinicalAssetID)
                   .SelectMany(g => g.OrderByDescending(d => d.NextInspectionDate)
                                     .Take(1));

        var ClinicalIDVM = (from s in dateresult.Where(q => q.NextInspectionDate <= tomorrow)
                           join co in db.ClinicalAssets on s.ClinicalAssetID equals co.ClinicalAssetID into AR
                           let subred = AR.OrderByDescending(subredASS => subredASS.ClinicalAssetID).FirstOrDefault()
                           join cp in db.ClinicalPATs on s.ClinicalAssetID equals cp.ClinicalAssetID into AP
                           let subpat = AP.OrderByDescending(SubPATASS => SubPATASS.ClinicalAssetID).FirstOrDefault()
                           orderby s.NextInspectionDate descending


                           select new ClinicalIDVM
                           {
                               ClinicalAssetID = s.ClinicalAssetID,
                               ProductName = subred.ProductName,
                               SerialNo = subred.SerialNo == null ? "" : subred.SerialNo,
                               InspectionDate = subpat.InspectionDate,
                               NextInspectionDate = s.NextInspectionDate

                           }).ToList();

1 Ответ

1 голос
/ 16 февраля 2020

Вы можете попробовать этот способ

InspectionDate = subpat.InspectionDate == null ? (DateTime?)null : subpat.InspectionDate

или изменить тип InspectionDate на string, тогда вы будете делать

InspectionDate = subpat.InspectionDate.HasValue 
? subpat.InspectionDate.Value.ToString("yyyy-MM-dd") : "";

Обновлено

 InspectionDate = subpat.InspectionDate == null ? (object) "" : subpat.InspectionDate
...