我收到以下错误:
发生无效的投射异常 无法转换类型为'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:我知道这听起来很俗气,但这是我的第一篇文章(希望我已经发布了它)。我已经跟随了许多线程,这些线程非常有帮助,但我无法进行任何投票,因为我没有声望点 - 真的!如果这是一个足够好的问题,也许每个人都会投票给我足够的声望点,这样我就能回报其他人的帮助。再次感谢!答案 0 :(得分:2)
Linq查询将返回一个集合(DesignSpec
),而您尝试将其分配给单个实例。
您需要将过滤器应用于提取单个实例的集合 - 例如Single()
,SingleOrDefault()
,First()
,FirstOrDefault()
等取决于根据查询的预期输出最有意义的内容。
请记住,如果查询恰好返回多个实例,则使用Single
变体会导致异常,而First
变体将处理此问题,因为它们只返回第一个实例发现。
答案 1 :(得分:1)
您还没有真正执行过查询。您已完成的工作描述了如何执行查询。
要实际执行查询,请使用:
FirstOrDefault()
返回第一个匹配元素或null SingleOrDefault()
返回匹配元素或null(这将检查只有一个匹配元素)。如果有多个匹配元素将抛出异常First()
返回第一个匹配元素,如果没有找到则抛出异常Single()
返回匹配元素,或者在找不到或发现多个时抛出异常。