序列在MVC3 Web App中不包含任何元素

时间:2012-12-18 13:43:28

标签: asp.net-mvc-3 linq sequence

因此,下拉菜单用于选择用户名称,然后点击“查看”,它将显示此用户之前预订的所有假期。

从这里,用户可以点击“创建新”,这将使他们进入创建新页面。 而不是必须从另一个下拉列表中重新选择他们的名字,而是通过currentuserID进行操作,并将第二个下拉列表替换为用户ID。

一切正常,2个单独的下拉菜单,用户可以预订假期等... 但是现在(在我更改了第二个下拉以保存ID值之后)我的控制器中的listHoliday方法出错:

错误:用户代码未处理InvalidOperationException。序列不包含任何元素。

var dbPerson1 = (from p in db.People
                             where p.Id == PersonId
                             select p).Single();

有人可以建议做什么吗?

2 个答案:

答案 0 :(得分:3)

这意味着您正在执行的linq查询没有返回任何结果,.Single()会抛出异常。

var dbPerson1 = (from p in db.People
                         where p.Id == PersonId
                         select p).FirstOrDefault(); // or use SingleOrDefault() if People are unique

if (dbPerson1==null) 
{
    throw new HolidayAllocationException("Person not found");
}
else
{
    // person found
    if (dbPerson.HolidaysRemaining > 0) 
    {
        AllocateHoliday(); // or whatever you need to do
    }
    else 
    {
        throw new NoHolidayLeftException(); 
    }
 }
如果查询没有返回任何内容,

dbPerson1将为null。

希望有所帮助

答案 1 :(得分:2)