从VS 2008升级到VS 2010后,获取Contains不是system.array错误的成员

时间:2010-08-17 18:50:52

标签: asp.net arrays visual-studio-2010

我有一个我在VS 2008中开发的针对.net 3.5的网站。它运作良好。我最近升级到VS 2010,需要对网站进行一些更改。但是,我收到编译错误(尚未对代码进行任何更改 - 只是启动该站点以确保它正常工作)。我得到“Contains”不是system.array的成员。我读过的所有内容都说明了包含方法是在.net 3.5中添加的,我知道这是正确的,因为它在VS 2008中工作。我在VS 2010中一直瞄准.net 3.5,但它仍然无效。我也使用linq与linqkit进行动态查询,我所有的linq查询都说我的查询不可查询(我没有在我面前的实际错误)。无论如何,要修复那个,我必须导入system.linq(我以前有system.data.linq,它工作正常)。重申一下,我没有将我的网站定位到VS 2010中的.net 4,我将其定位为.net 3.5。

我尝试将我的数组转换为arraylists,因为arraylists仍然使用.contains方法,但是当我在网站上运行时,它打破了我的linqkit查询。

这是我的linqkit查询:

 Dim str() As String = archlist.ToArray(GetType(String))
        Dim str3 As New ArrayList
        str3 = ArrayList.Adapter(str)
        predicate = predicate.And(Function(l As CompatTesting) str3.Contains(l.application.cpuarchitecture))

之前,我没有arraylist转换,我只有str.contains并且它很好地生成了一个sql“in”语句。现在使用上面的代码后,网站启动,但是当我实际运行代码时,我得到方法'布尔包含(System.Object)'没有支持的SQL转换。我也尝试将我的linqkit dll升级到最新版本,但它没有帮助。

我的问题是,因为我在2010年针对相同的.net 3.5框架,为什么不允许我再使用array.contains?也许如果我可以解决这个问题,它将解决我的linqkit问题,它说“包含”没有支持的转换为sql。

任何帮助将不胜感激。我不想回到vs 2008只是为了修复我的网站...

1 个答案:

答案 0 :(得分:-2)

右键点击项目 - >打开属性页面(Shift + F4)

将Target Framework设置为.NET Framework 3.5,然后单击“确定”并构建项目。