尝试执行联接时"Cannot not transform LINQ"错误?



好的,我正在尝试使用.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 });

最新更新