2014-02-21 75 views
0
Dim IsValid = From rec In Collection.QueryPalletID("").AsEnumerable() _ 
         Join rec In thedata.AsEnumerable() On lrec.ID.Trim Equals srec.Field(Of String)("ID").Trim _ 
         Select rec 

For Each rec As DataRow In IsValid 
    Exit For 
Next 

For Each throws對象引用未設置異常。如何處理這個異常?如何處理VB.NET LINQ對象引用未設置異常?

+0

你可以檢查你的示例代碼 - 有兩個'rec's和'lrec' /'srec'沒有定義。 –

+0

爲什麼你必須將rec定義爲你的數據行?如果您將其更改爲「For Each Rec in IsValid」,它應該可以工作。 IsValid從未轉換爲數據表,因此您正在比較對象IsValid和rec中的一行。如果IsValid中有值,它將進入for循環並退出for循環...如果在IsValid中沒有任何值,它將僅跳過for循環... –

回答

0

問題的根本原因可能是下面的表達式

lrec.ID.Trim Equals srec.Field(Of String)("ID").Trim 

一個這裏的值的是Nothing。使用有限的代碼示例無法確定哪一個是不可能的。我立即suspcion將lrecsrec因爲它們不是代碼示例中定義,但它可以很容易被lrec.IDsrc.Field(Of String)("ID")

一旦IsValid集合與For Each列舉的這些表達式的執行,並拋出一個異常時,Nothing被訪問。您需要解決這些到賬戶Nothing或將其初始化爲值

0

試試這個:

PS:我寫它的飛行,也許你應該做的數據類型的變化,但僅僅是顯示你(或許)可能的方式來驗證它。

Dim DataRows As IEnumerable(Of DataRow) = 
    From rec As DataRow In Collection.QueryPalletID("").AsEnumerable() 
    Join rec As DataRow In thedata.AsEnumerable() On lrec.ID.Trim Equals srec.Field(Of String)("ID").Trim 
    Select rec 

Dim IsValid As Boolean = 
    If(DataRows IsNot Nothing, 
     (From [Datarow] As DataRow In DataRows Where [Datarow] IsNot Nothing).Any), 
     False) 


If IsValid Then 

    For Each rec As DataRow In DataRows 
     Exit For 
    Next rec 

End If 
+0

請在布爾語法中幫助,在.Any錯誤沒有采取。 – karthik

+0

對不起,我做了一些misstypes,現在它應該工作 – ElektroStudios

+0

現在它顯示關鍵字是無效的標識符。 Plz幫助我解決這個問題。 – karthik

相關問題