簡體   English   中英

Visual Basic LINQ錯誤

[英]Visual basic LINQ error

有人知道我為什么會有這個錯誤嗎?

我收到以下錯誤:

你調用的對象是空的

這是有問題的LINQ。 感謝您的任何幫助。

Dim q = From line In seats
        Let data = line.Split(New [Char]() {" "c}, StringSplitOptions.RemoveEmptyEntries) ' it occurs in this line '
        Let seatA = data(0)
        Let seatB = data(1)
        Let seatC = data(2)
        Let seatD = data(3)
        Let seatE = data(4)
        Let seatF = data(5)
        Where seatA Is "."
        Where seatB Is "."
        Select seatA, seatF

如果將第一行更改為:

Dim windowSeatQuery = From line In seats.Where(function (s) s isnot nothing)

這表示席位列表中存在空值,並且上面的Where lambda應該將其刪除。

您的Where子句對我來說很奇怪。 您不應該使用=運算符,而不是:

Dim q = From line In seats
    Let data = line.Split(New [Char]() {" "c}, StringSplitOptions.RemoveEmptyEntries) ' it occurs in this line '
    Let seatA = data(0)
    Let seatB = data(1)
    Let seatC = data(2)
    Let seatD = data(3)
    Let seatE = data(4)
    Let seatF = data(5)
Where seatA = "." AndAlso seatB = "."   '<------   Use = on this line not Is
Select seatA, seatF

並且您確定每一行都用空格而不是其他空格分隔嗎? 即使其中存在Is也不會導致Null Ref。

這是我的示例程序,似乎有效(在LinqPad中測試,該程序似乎不支持隱式的行連續字符):

Sub Main
    Dim seats As New List(Of String)()
    seats.Add("1 2 3 4 5 6")
    seats.Add(". . 9 8 7 6")
    seats.Add(". . 5 5 5 5")
    seats.Add("1 2 3 4 5 6")
    seats.Add(". . 2 4 6 8")
    seats.Add("1 2 3 4 5 6")

    Dim q = From line In seats _
        Let data = line.Split(New [Char]() {" "c}, StringSplitOptions.RemoveEmptyEntries) _
        Let seatA = data(0) _
        Let seatB = data(1) _
        Let seatC = data(2) _
        Let seatD = data(3) _
        Let seatE = data(4) _
        Let seatF = data(5) _
    Where seatA = "." AndAlso seatB = "." _
    Select seatA, seatF

    q.Dump()
End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM