序列中没有元素?

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


BlogPost post = (from p in dc.BlogPosts

                 where p.BlogPostID == ID

                 select p).Single();

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


(使用ASP.NET MVC和LINQ)


万千封印
浏览 455回答 3
3回答

江户川乱折腾

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

蓝山帝景

从“ 修复LINQ错误:序列不包含任何元素 ”中:当您收到LINQ错误“序列不包含任何元素”时,通常是因为使用的是First()or Single()命令,而不是FirstOrDefault()and SingleOrDefault()。这也可能由以下命令引起:FirstAsync()SingleAsync()Last()LastAsync()Max()Min()Average()Aggregate()

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);
打开App,查看更多内容
随时随地看视频慕课网APP