2015-10-06 81 views
2

编辑:没关系。下面的示例是从旧版VB代码转换而来的C#编写的,这些代码具有相同名称的结构和类对。所以下面的“KooClass”实际上是一个结构,而KooArray返回了类类的数组。InvalidCastException从非常简单的linq查询

想删除这个问题,但没有看到这样的选项。

============================================== ==== 第一个查询工作正常。第二个linq抛出InvalidCastException异常。

this.HooArray是一个返回HooStruct数组的属性。同样,KooArray是一个返回KooClass数组的属性。

我已经通过获取这两个数组属性,他们没有问题返回。

正如你可以猜出的名字,HooStruct是一个结构,KooClass是一个类。

这是怎么回事?

 var goo = (from Foo.Goo.HooStruct g in this.HooArray 
        select g).ToList(); 

     var foo = (from Foo.Goo.KooClass g in this.KooArray 
        select gt).ToList(); 
+6

什么是 “GT” 的对象?应该是g? – Cory

+1

我们需要看到KooArray和KooClass的声明能够给你任何具体的信息。 – bvoyelr

回答

2

看起来KooArray包含不KooClass对象

+0

如果解决方案不那么简单,那么使用旧式编程(不使用linq)重新编写代码,并希望解决方案将变得明显 – Joe

+0

这就是这么简单,或者更简单......我也做了同样的错误的工作与这个代码的VB版本(和VS自动完成感到困惑),然后在一段时间内没有看到它。 – Greylander

+0

感谢您花时间关闭此问题。 – Joe