You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Linq Where子句中用字符串变量时VS2022解决方案无报错但构建失败

Visual Studio 2022添加LINQ语句后无提示构建失败问题

我使用Visual Studio 2022开发的解决方案原本可正常构建,添加以下LINQ语句后构建失败,但没有任何错误提示:

Dim playlistName as String = "blablabla"
Dim objPlaylist = (From p In Playlists
                   Where p.Name = playlistName
                   Select p).FirstOrDefault()

项目细节

  • Playlists是类型为System.Collections.ICollection的属性,用于存储Playlist对象。即使将其类型改为System.Collections.Generic.ICollection(Of Playlist)或System.Collections.Generic.IEnumerable(Of Playlist),问题仍存在。
  • 当Where子句使用硬编码字符串(如Where p.Name = "temp")时,构建正常且能查询到对应对象;无论使用Name还是Path属性,硬编码方式均有效,使用变量则触发构建失败。

已尝试的解决操作

  • 清理解决方案并重建
  • 重启Visual Studio
  • 添加System.Data.Linq程序集引用
  • 导入System.Linq命名空间(IDE提示无需导入)
  • 改用直接调用FirstOrDefault的写法:
Dim playlistName As String = "blablabla"
Dim oPlaylist = TestPlaylists.FirstOrDefault(Function(p) p.Name = playlistName)

以上操作均未解决问题,且相同代码在全新解决方案中可正常运行。

相关代码片段

Playlists属性定义

Private _playlists As System.Collections.ICollection
Public Property Playlists() As System.Collections.ICollection
    Get
        Return _playlists
    End Get
    Set(ByVal value As System.Collections.ICollection)
        _playlists = value
        RaisePropertyChanged("Playlists")
    End Set
End Property

Playlist类定义

<Serializable()>
Public Class Playlist
    Inherits SSUtil.CustomObjects.WPF.NotificationObject

    Public Path As String  ' 播放列表在磁盘上的路径(相对于前缀)
    Public Songs As New System.Collections.SortedList(New CaseInsensitiveComparer)  ' 播放列表中的歌曲列表;仅为索引到主ColSongs的字符串列表
    Public HasChanged As Boolean
    Public ReadOnly Property Name() As String
        Get
            ' 仅返回播放列表名称,例如Metal.m3u
            Return JustName(Path)
        End Get
    End Property
    ... 更多函数
End Class

最终解决方案

经过排查,问题根源在于项目中存在一个与playlistName同名的模块级变量,导致LINQ查询中的局部变量被隐式覆盖,编译器无法正确解析变量引用但未抛出明确错误。将局部变量重命名为targetPlaylistName后,构建成功通过。

内容的提问来源于stack exchange,提问作者Sandra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 04:45:57