Ошибка «Не удается преобразовать LINQ» при попытке выполнить объединение? - PullRequest
2 голосов
/ 28 февраля 2012

Хорошо, я пытаюсь написать запрос LINQ с Join, используя VB на .NET 4.0.

Под строкой кода у меня появляется красная заглушка, и когда я намыкаю на нее, она показывает:

"Не удается преобразовать 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 Ответ

1 голос
/ 28 февраля 2012

Попробуйте использовать 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 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...