当表为空时,序列不包含匹配元素错误

本文关键字:包含匹 元素 错误 | 更新日期: 2023-09-27 18:11:16

当表为空时,我得到这个错误。也就是说,当模型没有值时,我得到这个错误:

序列不包含匹配元素

我如何在这里放一些逻辑来摆脱它?

问题在这里:

var emp = model.vm.Single(i => i.JobseekerId == id);

我试过的是:

public ActionResult JobSeekerProfile(ViewModel model)
{
    if (Session["LogedUserID"] != null)
    {
        JobContext jcntxt = new JobContext();
        int id = Convert.ToInt32(Session["LogedUserID"]);
        model.vm = from jr in jcntxt.JobseekerRegestrations
                   join jc in jcntxt.JobseekerContactdetails on jr.JobseekerId equals jc.JobseekerId
                   join jb in jcntxt.JobseekerBackgroundDetails on jc.JobseekerId equals jb.JobseekerId
                   join jj in jcntxt.JobseekerJobDetails on jc.JobseekerId equals jj.JobseekerId
                   select new ViewModel
                   {
                       JobseekerId = jr.JobseekerId,
                       FirstName = jc.FirstName,
                       LastName = jc.LastName,
                       EmailID = jc.EmailID,
                       JobTitle = jj.JobTitle,
                       Location1 = jj.Location1,
                       University = jb.University,
                       TechnicalExp = jb.TechnicalExp,
                       WorkField = jb.WorkField
                   };
        var job = model.vm.Single(i => i.JobseekerId == id);
        model.FirstName = job.FirstName;
        model.LastName = job.LastName;
        model.EmailID = job.EmailID;
        model.JobTitle = job.JobTitle;
        model.Location1 = job.Location1;
        model.University = job.University;
        model.TechnicalExp = job.TechnicalExp;
        model.WorkField = job.WorkField;
        return View(model);
    }
    else
    {
        return RedirectToAction("JobSeekerLogin");
    }
}
<<h3>视图/h3>
@model Sample.Models.ViewModel
<div class="row">
    <div class=" col-md-12 col-lg-12 ">
        <table class="table table-user-information">
            <tbody>
                <tr>
                    <td>User Name:</td>
                    <td>@Model.FirstName @Model.LastName</td>
                </tr>
            </tbody>
        </table>
    </div>
</div>

当表为空时,序列不包含匹配元素错误

使用SingleOrDefault方法,然后检查结果对象是否为null

var job = model.vm.Where(i => i.JobseekerId == id).SingleOrDefault();
if (job != null)
{
    model.FirstName = job.FirstName;
    model.LastName = job.LastName;
    model.EmailID = job.EmailID;
    model.JobTitle = job.JobTitle;
    model.Location1 = job.Location1;                
    model.University = job.University;
    model.TechnicalExp = job.TechnicalExp;
    model.WorkField = job.WorkField;
}

Single期望有总是我们正好1个结果。0或大于1将导致异常。

也许你想用SingleOrDefault代替,但是一旦你这样做,job可能是空的-在这种情况下,你的下一行将与NullReferenceException错误-所以确保你捕获:

var job = model.vm.SingleOrDefault(i => i.JobseekerId == id);
if (job != null)
{
    model.FirstName = job.FirstName;
    model.LastName = job.LastName;
    model.EmailID = job.EmailID;
    model.JobTitle = job.JobTitle;
    model.Location1 = job.Location1;                
    model.University = job.University;
    model.TechnicalExp = job.TechnicalExp;
    model.WorkField = job.WorkField;
}