Where不是System.Collections.Generic.List(of String)Linq的成员



应用程序类型是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允许您全局地指定";导入的名称空间";在";参考文献";选项卡。命名空间可能在您的一个项目中在项目范围内导入,但在另一个项目则不导入。

最新更新