2015-10-12 37 views
0

我需要根據特定的id獲取費用的名稱,我試圖直接獲取列而不是整行。LINQ返回EnumerableRowCollection

我有以下代碼

Dim fee As EnumerableRowCollection(Of String) = (From row In dtFee.AsEnumerable _ 
            Where row.Field(Of SqlInt32)("idFee").Value = idFee _ 
            Select row.Field(Of SqlString)("name").Value) 

但是當我訪問它通過:

lblIdFee.Text = fee.FirstOrDefault 

我得到無效皈依的異常,但如果聲明的結果

Dim fee = ... 

如果我通過toString()方法從費用中得到結果,因爲我沒有可用的杉木stOrDefault我得到:

System.Data.EnumerableRowCollection`1[System.String] 

我不知道是否缺少一些參考庫。

+0

你應該考慮使用強類型數據表。它將使您的LINQ語句更加清晰,並且不必手動輸入值。 –

回答

0

更改您的變量類型

Dim fee As IEnumerable(Of String) ... 

你投射到字符串值的集合,而不是集合DataRow小號

+0

我仍然得到__指定轉換的異常無效_ –

+0

嘗試在查詢中使用'Integer'和'String'來代替'SqlInt32'和'SqlString'。是否可以爲空? –

+0

正確,那是問題(使用sql的版本)。 –