我正在VB.NET WPF解决方案中尝试LINQ查询,该解决方案通过区域桥接两个数据表和组。
我在这些行上收到“无效的投射例外”:
.MfstCt = ZoneGroup.Count(Function(c) c.Field(Of String)("ConsignmentNumber")), _
.ArticleCt = ZoneGroup.Count(Function(c) c.Field(Of String)("ArticleNumber")) _
错误说明:
从字符串“B4B0158234”到“布尔”类型的转换无效。
但我在查询中看不到任何转换为布尔值。
字段ConsignmentNumber
位于mfst表中,字段ArticleNumber
位于文章表中。我在下面添加了整个查询。任何人都可以帮忙建议我哪里出错吗?
Dim query = _
From Mfst In tblMFst.AsEnumerable() _
Join article In tblArticle.AsEnumerable() _
On Mfst.Field(Of Integer)("PCMSConsignment_ID") Equals _
article.Field(Of Integer)("PCMSConsignment_ID") _
Group Mfst By Zone = Mfst.Field(Of String)("PostZone") Into ZoneGroup = Group
Select New With _
{ _
Key Zone, _
.MfstCt = ZoneGroup.Count(Function(c) c.Field(Of String)("ConsignmentNumber")), _
.ArticleCt = ZoneGroup.Count(Function(c) c.Field(Of String)("ArticleNumber")) _
}
For Each x In query
Console.WriteLine(x.Zone, x.MfstCt, x.MfstCt)
Next
编辑:我更改了代码以反映正确的(Of String)
并更新了收到的错误消息。
答案 0 :(得分:0)
Linq Count function需要一个布尔比较。你正在路过:
.Count(Function(c) c.Field(Of String)("ConsignmentNumber"))
尝试将c.Field(Of String)("ConsignmentNumber")
作为布尔值返回。
答案 1 :(得分:0)
LINQ的.Count
扩展方法,当它需要Func
谓词时,需要函数返回一个布尔值。请参阅documentation here。该函数用作谓词来选择要计算的元素(例如Function(x) x >= 20
)。
我不确定你要完成的是什么,但似乎你应该做ZoneGroup.Count()
之类的事情,或者你是否想要匹配特定条件ZoneGroup.Count(Function(c) c.IsTheThingWeWant())
。