为了账号安全,请及时绑定邮箱和手机立即绑定

序列中没有元素?

/ 猿问

序列中没有元素?

C#
万千封印 2019-12-25 15:32:42

我目前在两个地方使用一个查询来从数据库中获取一行。


BlogPost post = (from p in dc.BlogPosts

                 where p.BlogPostID == ID

                 select p).Single();

在检索将数据放入文本框中的行时,该查询很好,但是当用于检索该行以对其进行编辑并将其放回数据库时,它将返回错误“序列不包含任何元素”。我不明白为什么它可能在一个实例中找到一个合适的行,而在另一个实例中找不到。


(使用ASP.NET MVC和LINQ)


查看完整描述

3 回答

?
慕雪9262066

在这两种情况下,都在该行上放置一个断点,或在其之前放置一个Debug.Print,然后查看包含的ID。


查看完整回答
反对 回复 2019-12-25
?
蓝山帝景

从“ 修复LINQ错误:序列不包含任何元素 ”中:

当您收到LINQ错误“序列不包含任何元素”时,通常是因为使用的是First()or Single()命令,而不是FirstOrDefault()and SingleOrDefault()

这也可能由以下命令引起:

  • FirstAsync()

  • SingleAsync()

  • Last()

  • LastAsync()

  • Max()

  • Min()

  • Average()

  • Aggregate()


查看完整回答
反对 回复 2019-12-25
?
POPMUISE

好吧,这是ID什么?特别是它是局部变量吗?存在一些范围/捕获问题,这意味着可能只需要针对查询使用第二个变量副本:


var id = ID;

BlogPost post = (from p in dc.BlogPosts

                 where p.BlogPostID == id

                 select p).Single();

也; 如果这是LINQ-to-SQL,则在当前版本中,如果使用以下格式,则行为会稍微好一些:


var id = ID;

BlogPost post = dc.BlogPosts.Single(p => p.BlogPostID == id);


查看完整回答
反对 回复 2019-12-25

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信