2010-07-03 55 views
0

我正在使用VB .Net進行此操作,因此我無權訪問var或者這將是一件簡單的事情。確定要用來存儲Linq查詢對象的類型

現在我的查詢如下

Dim errors As IOrderedQueryable(Of IGrouping(Of String, RSError)) = (From e In db.RSErrors 
                    Where e.UserID = "msarchet" 
                    Group e By e.Type Into t = Group).AsEnumerable 

所以我用這個LinqPad查詢可以幫助我確定對象將是什麼樣子。我找回了一個IOrderQueryable(Of RSError),其中包含一個IGrouping(Of String, RSError),用於查詢返回的每個分組對象。

但是,我最終以當前對象類型errorsIOrderedQueryable(Of IGrouping(Of String, RSError)),因爲我在VS中遇到了轉換錯誤。

無法轉換類型的對象「System.Data.Linq.DataQuery 1[VB$AnonymousType_1 2 [System.String,System.Collections.Generic.IEnumerable 1[RSSAdmin2.RSError]]]' to type 'System.Linq.IOrderedQueryable 1 [System.Linq.IGrouping 2[System.String,RSSAdmin2.RSError]]'.

我不知道如何擺脫返回對象的VB $ AnonymousType_1部分。

我是否在正確的軌道上,或者我完全錯過了某些東西?

回答

1

你可以試試下面的

Dim errors = (From e In db.RSErrors 
       Where e.UserID = "msarchet" 
       Group e By e.Type Into t = Group).AsEnumerable 

這樣做,這樣基本上將其設置爲

昏暗的錯誤, 對象 [無論表達式返回]

+0

我能做到它隱含着......嘆了口氣,這是我在需要顯式聲明的條件下工作所得到的。 – msarchet 2010-07-03 16:52:43

+0

是的我明白隱式聲明做什麼,它的工作原理,謝謝你啓動我的星期六大腦 – msarchet 2010-07-03 16:55:38

+0

不,它不會創建'Object'類型。這在VB9中發生了變化,它實際上會創建表達式返回的特定類型,就像C#3中的'var'關鍵字一樣。 – Guffa 2010-07-03 16:56:43