好的,我正在尝试使用.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
中所有日期时间的读数列表,包括没有读数的日期的空白条目。
尝试使用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 });