加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

LINQ .Startswith或.Contains VB.NET4中的问题

发布时间:2020-12-17 07:30:04 所属栏目:百科 来源:网络整理
导读:这可能是一个新手问题…… 在我的代码中,我可以轻松地使用“where Obj.Feld = String”,但使用“where Obj.Feld.StartsWith(”a“)”不起作用.请参阅以下两个功能: Public Function EntriesByFileName(ByRef Database() As Entry,ByVal Filename As _ Strin
这可能是一个新手问题……

在我的代码中,我可以轻松地使用“where Obj.Feld = String”,但使用“where Obj.Feld.StartsWith(”a“)”不起作用.请参阅以下两个功能:

Public Function EntriesByFileName(ByRef Database() As Entry,ByVal Filename As _
  String) As IEnumerable(Of Entry)
        Dim Result As IEnumerable(Of Entry) = From EntryObject In Database _
        Where (EntryObject.FileName = Filename) Select EntryObject
        Return Result
    End Function

    Public Function EntriesLikeFileName(ByRef Database() As Entry,ByVal _
      Filename As String) As IEnumerable(Of Entry)
        Filename = Filename.ToLower
        Dim Result As IEnumerable(Of Entry) = From EntryObject In Database _
          Where EntryObject.FileName.StartsWith("a") Select EntryObject
        Return Result
    End Function

第一个函数(byFileName)工作正常.第二个函数(LikeFileName)没有.使用Startswith我得到“对象引用未设置为对象的实例”.我究竟做错了什么?

数据库是一个对象数组,一个由字符串组成的结构

解决方法

EntryObject.FileName可以为NULL,因此EntryObject.FileName.StartsWith(..)可以抛出NullReferenceException.

将条件更改为首先检查NULL,例如

if EntryObject.FileName <> nothing AndAlso EntryObject.FileName.StartsWith(..)

使用AndAlso这里使用短路,这意味着如果第一个条件不满足,第二个条件将不会被评估,因此我们无法获得NullReferenceException.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读