尝试加入时“无法转换LINQ”错误?

时间:2012-02-28 19:40:56

标签: vb.net linq join

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

1 个答案:

答案 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 });