应用程序类型是Windows窗体应用程序,但我将其用作解决方案中的辅助项目,因此它在项目中实际上没有任何窗体。
选项推断打开。使用.net 3.5
我尝试引用System.Core、System.Data、System.Data.Linq,但都不起作用。
Dim lis As New List(Of String)
lis.Add("orange")
lis.Where(Function(x) x = "apple").ToList()
获取编译错误:
"此处"不是"System.Collections.Generic.List(of String("的成员
我已经搜索了一段时间。它在父项目中工作良好,但在辅助项目中则不然。我需要做什么才能让"Where"在我的列表中起作用?
您需要两个
- 对
System.Core
的引用(您已经有了(和 - 位于代码文件顶部的
Imports System.Linq
(您可能缺少它(。或者,您可以全局导入整个项目的命名空间(有关详细信息,请参阅下文(
我怎么知道
您尝试使用的扩展方法是Enumerable.Where
。其文件说明如下:
命名空间:System.Linq
程序集:System.Core.dll
第一行是需要导入的命名空间,第二行是需要引用的DLL。
为什么我需要导入命名空间
因为您希望将其用作扩展方法。如果将其用作常规方法(Enumerable.Where(lis, ...)
(,则可以只使用完全限定类名,而不导入命名空间(即System.Linq.Enumerable.Where(lis, ...)
(。但是,如果将其用作扩展方法(lis.Where(...)
(,则需要导入命名空间。
为什么我的其他项目不需要它
Visual Basic允许您全局地指定";导入的名称空间";在";参考文献";选项卡。命名空间可能在您的一个项目中在项目范围内导入,但在另一个项目则不导入。