首页 > 解决方案 > 如果 linq 查询未找到匹配记录,则对象引用未设置错误?

问题描述

我有这个代码

public object GetMaxReportNo(string OfficeStationCombination = "")
        {
            try
            {
                InspectionReport InspectionReport = new InspectionReport();
                string VelosiReportNo = "";

                var query = uow.InspectionReportRepository.GetQueryable().AsQueryable();

                if (query.Any())
                {
                    VelosiReportNo = query.Where(x => x.VelosiReportNo.Contains(OfficeStationCombination)).OrderByDescending(x => x.InspectionReportID).DefaultIfEmpty(null).FirstOrDefault().VelosiReportNo;
                }

                return VelosiReportNo;
            }
            catch (Exception ex)
            {

                throw ex;
            }
        }

这一行:

VelosiReportNo = query.Where(x => x.VelosiReportNo.Contains(OfficeStationCombination)).OrderByDescending(x => x.InspectionReportID).DefaultIfEmpty(null).FirstOrDefault().VelosiReportNo;

抛出错误:

你调用的对象是空的。

当我传递数据库中尚不存在记录的参数时。但是,我无法弄清楚它返回的是什么?我该如何控制它?

我已经处理null了,但这不起作用。如果没有找到记录,我该如何处理,以便我可以据此做出决定?

标签: c#asp.net-mvcentity-frameworklinqentity-framework-6

解决方案


query.Where(x => x.VelosiReportNo.Contains(OfficeStationCombination)).Any()

成功了。

完整代码;

                if (query.Any())
                {
                    if (query.Where(x => x.VelosiReportNo.Contains(OfficeStationCombination)).Any())
                    {
                        VelosiReportNo = query.Where(x => x.VelosiReportNo.Contains(OfficeStationCombination)).OrderByDescending(x => x.InspectionReportID).FirstOrDefault().VelosiReportNo;
                    }
                    else
                    {
                        VelosiReportNo = null;
                    }

                }

推荐阅读