2014-02-06 13 views
1

爲什麼不能編譯如下:DataReader的辭書Linq'd查詢(字符串對象)

 Dim AdDr As SqlDataReader = Addcommand.ExecuteReader() 
     Dim query = From row In AdDr.Cast(Of Data.Common.DbDataRecord)() _ 
        Select New With { _ 
         .Items = New Dictionary(Of String, Object)(_ 
          (From ii In Enumerable.Range(0, row.FieldCount) _ 
          Select New DictionaryEntry(key:=row.GetName(ii), value:=row.GetValue(ii)))) _ 
         } 
     Dim rslt = query.ToList() 

第一部分工作得很好,如果我要的是行的查詢。然而,我真正想要的是一個查詢,它提供了Dictionary(String,Object)的行,其中鍵是FieldName,值是DataItem。

回答

1

目前IEnumerable正在傳遞給Dictionary的構造函數,這可能是它的抱怨。相反,您可以撥打IEnumerable撥打ToDictionary()以獲得您的Dictionary。像這樣的東西...

Dim query = From row In AdDr.Cast(Of Data.Common.DbDataRecord)() _ 
       Select New With { _ 
        .Items = _ 
         (From ii In Enumerable.Range(0, row.FieldCount) _ 
         Select New With { .Key =row.GetName(ii), .Value = row.GetValue(ii) }).ToDictionary(Function (x) x.Key, Function(x) x.Value) _ 
        }