gpt4 book ai didi

vb.net - LINQ .Startswith 或 .Contains VB.NET4 中的问题

转载 作者:行者123 更新时间:2023-12-01 10:13:33 40 4
gpt4 key购买 nike

这可能是一个新手问题...

在我的代码中,我可以轻松地使用“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 我得到“对象引用未设置到对象的实例”。我做错了什么?

数据库是Object的数组,由字符串组成的结构

最佳答案

EntryObject.FileName 可以是 NULL,所以 EntryObject.FileName.StartsWith(..) 可以抛出一个 NullReferenceException.

将条件更改为首先检查 NULL eg

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

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

关于vb.net - LINQ .Startswith 或 .Contains VB.NET4 中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3394551/

40 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com