0

我收到以下错误:

发生无效的转换异常无法将类型“System.Data.Linq.DataQuery`1[WindowsApplication1.DesignSpec]”的对象转换为类型“WindowsApplication1.DesignSpec”

在以下测试代码上:

Dim prodSku As String = "11037"
Dim designSpec As DesignSpec = From row In dbLocal.DesignSpecs Where row.Name = prodSku Select row

我搜索了高低并尝试了许多选项,但显然不是正确的选项。任何帮助我使用正确语法的帮助将不胜感激。

亲切的问候,并提前感谢您的帮助!

PS:我知道这听起来有点俗气,但这是我的第一篇文章(希望我已经充分发布了)。我关注了许多非常有用的线程,但我无法投赞成票,因为我没有声望点——真的!如果这是一个足够好的问题,也许每个人都会投票给我足够的声望点,这样我就可以回报其他人的帮助。再次感谢!

4

2 回答 2

2

Linq 查询将返回一个(的)集合DesignSpec,而您正试图将其分配给单个实例。

您需要将过滤器应用于提取单个实例的集合 - 例如Single(), SingleOrDefault(), First(),FirstOrDefault()等,具体取决于基于查询的预期输出最有意义的内容。

请记住,Single如果查询恰好返回多个实例,则使用变体将导致异常,而First变体将处理这个问题,因为它们只是返回找到的第一个实例。

于 2013-09-04T05:39:38.860 回答
1

您还没有实际执行查询。您所做的是描述了如何执行查询。

要实际执行查询,请使用:

  • FirstOrDefault()返回第一个匹配元素或 null
  • SingleOrDefault()返回匹配元素或 null(这将检查是否只有一个匹配元素)。如果有多个匹配元素,则会抛出异常
  • First()返回第一个匹配元素,如果没有找到则抛出异常
  • Single()返回匹配元素或在没有找到或找到多个元素时抛出异常。
于 2013-09-04T05:42:24.643 回答