2010-07-03 58 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