我的查询使我的程序崩溃运行时,如果查询没有找到数据库中的任何行,它会崩溃并在查询上抛出一个notsupportedexception,如果它确实找到一个它继续运行它应该..我解决这个问题的方法是试试这一切,当它捕获异常做我想要它做的,如果有0行,但我觉得必须有一个更好的方法来解决这个
编辑:尝试过firstordefault无法正常工作
var test = (from a in conn.vaccineringar
where a.Personnummer.Equals(personNummer) && a.Vaccin.Equals(vaccinId)
select a).First();
if(test != null)
{
return "No can do";
}
答案 0 :(得分:4)
使用FirstOrDefault()
代替First()
:
返回满足指定条件的序列的第一个元素,如果没有找到这样的元素,则返回默认值。
var test = (from a in conn.vaccineringar
where a.Personnummer.Equals(personNummer) && a.Vaccin.Equals(vaccinId)
select a).FirstOrDefault();
if(test != null)
{
return "No can do";
}
此外,您应该使用==
代替Equals
来电:
var test = (from a in conn.vaccineringar
where a.Personnummer == personNummer && a.Vaccin == vaccinId
select a).FirstOrDefault();
答案 1 :(得分:1)
您可以尝试FirstOrDefault
。此方法返回与您的条件匹配的第一个元素,如果没有任何元素,则返回默认值,在您的情况下为null
。所以这样你就不会有任何错误。
var test = (from a in conn.vaccineringar
where a.Personnummer.Equals(personNummer) && a.Vaccin.Equals(vaccinId)
select a).FirstOrDefault();
if(test != null)
{
return "No can do";
}
答案 2 :(得分:0)
崩溃是因为您使用的是.First()
:System.InvalidOperationException
if
源序列是空的。
尝试使用.FirstOrDefault()
代替
答案 3 :(得分:0)
你可能想尝试.FirstOrDefault()而不是.First()。
这将提供第一个值或默认值(在这种情况下可能为null)。