好的,我正在尝试在.NET 4.0中使用VB编写一个带Join
的LINQ查询。
我在我的代码行下面得到了红色的波浪线,当我鼠标悬停在它上面时,它显示:
“无法转换LINQ”
注意双阴性。
任何人都知道这个错误意味着什么?在语法上它意味着没有错误,但我不知道为什么甚至应该有一个错误消息。这个“错误”也会导致相关行上的自动完成,就好像实际上 IS 一样。所以我很困惑。
以下是我的变量声明:
Dim dateTimes As Date() = GetDates()
Dim readings = (
From dr As DataRow In dbReadings.Rows
Where dr("SENSORID") = sensorid
Select New Device.Reading With {
.Dated = CDate(dr("DATEDT")),
.Value = CSng(dr("VALUE")),
.Exception = CBool(dr("EXCEPTION"))
})
这是我的查询,我被告知无法查询:
Dim joined = From dt As Date In dateTimes
Join r As Device.Reading In readings On r.Dated = dt
Into DateTimeReadings From r In DateTimeReadings.DefaultIfEmpty()
Select r.Value
我正在尝试获取dateTimes
中所有日期时间的读数列表,包括没有读数的日期的空白条目。
答案 0 :(得分:1)
尝试使用Cast(Of T)(),因为您不能将linq用于数据行集合
Dim joined = From dt As Date In dateTimes
Join dr As DataRow In sreadings.rows.Cast(Of DataRow)()
On CDate(dr("DATEDT")) = dt
http://msdn.microsoft.com/en-us/library/bb341406.aspx#Y0
试试这个(抱歉,它在C#中)
var res1 = dates.Join(sreadings.rows.Cast<DataRow>()
, c => c, d => d.Field<DateTime>("DATEDT"), (date, row) => new { Date = date, Row = row });