You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC查询检验结果报Sequence contains no elements问题咨询

解决方案

1. 控制器代码修改

给所有集合属性添加空值兜底逻辑,确保哪怕没有查询到数据,返回的也是空集合而非null,避免视图调用时报空引用错误:

public ActionResult MasterDetails(int id)
{
    var tables = new Orders_Tables
    {
        testsRanges = db.TestsRanges.ToList() ?? new List<TestsRanges>(),
        LabResults = db.LAB_RESULTS.Where(o => o.ORDER_ID == id).Include(p => p.LabTests).Include(t => t.Patients).ToList() ?? new List<LAB_RESULTS>(),
        LabParaResult = db.LAB_PARA_RESULTS.Where(o => o.ORDER_ID == id).Include(t => t.Patients).Include(t => t.LabTests).Include(c => c.Customers).ToList() ?? new List<LAB_PARA_RESULTS>(),
        LabCultureResults = db.LAB_CULTURE_RESULT.Where(o => o.ORDER_ID == id).Include(t => t.Patients).Include(t => t.LabTests).Include(c => c.Customers).ToList() ?? new List<LAB_CULTURE_RESULT>(),
        LabMicroResults = db.LAB_MICRO_NEGATIVE_RESULT.Where(o => o.ORDER_ID == id).ToList() ?? new List<LAB_MICRO_NEGATIVE_RESULT>(),
        labCashView = db.LAB_RESULT_CASH_VIEW.Where(o => o.order_number == id).ToList() ?? new List<LAB_RESULT_CASH_VIEW>(),
        // 重点给报错的这个集合加兜底
        labClinicsViewResult = db.LAB_RESULTS_CLINIC_VIEW.Where(o => o.order_number == id).ToList() ?? new List<LAB_RESULTS_CLINIC_VIEW>(),
        LabParasitologyView = db.LAB_PARASITOLOGY_VIEW.Where(o => o.order_number == id).ToList() ?? new List<LAB_PARASITOLOGY_VIEW>(),
        // 缺失的三个视图集合也按同样规则补全兜底
        LabCulturesView = db.LAB_CULTURES_VIEW.Where(o => o.order_number == id).ToList() ?? new List<LAB_CULTURES_VIEW>(),
        LabMicroView = db.LAB_MICRO_VIEW.Where(o => o.order_number == id).ToList() ?? new List<LAB_MICRO_VIEW>(),
        LabHistopathologyView = db.LAB_HISTOPATHOLOGY_VIEW.Where(o => o.order_number == id).ToList() ?? new List<LAB_HISTOPATHOLOGY_VIEW>()
    };
    return View(tables);
}

注意:上述代码中的泛型类型需要替换为你项目中对应的实体类名。

2. 视图代码加固

使用C#空条件运算符?.调用集合的FirstOrDefault方法,哪怕集合意外为null也会直接返回null,不会抛出异常:

// 只需要修改LABCLINICVIEW相关的调用行,其他集合同理调整即可
var labhema1 = LABCLINICVIEW?.FirstOrDefault(x => x.DEPTID == 1);
var labBio1 = LABCLINICVIEW?.FirstOrDefault(x => x.DEPTID == 2);
var labSer1 = LABCLINICVIEW?.FirstOrDefault(x => x.DEPTID == 3);
var labHor1 = LABCLINICVIEW?.FirstOrDefault(x => x.DEPTID == 4);
var labcovid1 = LABCLINICVIEW?.FirstOrDefault(x => x.DEPTID == 9);

3. 渲染逻辑调整

后续视图渲染各个科室的检验结果时,先判断对应的变量是否为null,只有不为null时才渲染对应模块,为空直接跳过即可:

@if(labcovid1 != null)
{
    <!-- 渲染科室9的检验结果内容 -->
}
@if(labPara1 != null)
{
    <!-- 渲染科室6的检验结果内容 -->
}
<!-- 其他科室模块按相同规则处理 -->

修改完成后,科室6、8的订单查询时,找不到对应视图数据只会把对应变量赋值为null,不会抛出异常,页面会正常加载其他存在的检验结果内容。

内容的提问来源于stack exchange,提问作者Ziad Adnan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:27:04