Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
LINQ.Startswith or.在VB.NET4中包含问题_Vb.net_Linq_Contains_Startswith - Fatal编程技术网

LINQ.Startswith or.在VB.NET4中包含问题

LINQ.Startswith or.在VB.NET4中包含问题,vb.net,linq,contains,startswith,Vb.net,Linq,Contains,Startswith,这可能是一个新手问题 在我的代码中,我可以很容易地使用“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 IEnume

这可能是一个新手问题

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


数据库是一个对象数组,是一个由字符串组成的结构,请确保数据库不包含任何空条目。您可以对null应用=运算符,但不能对其调用任何方法,因此StartWith()将失败。

EntryObject.FileName
可以是
null
,因此
EntryObject.FileName.StartWith(…)
可以引发
NullReferenceException

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

if EntryObject.FileName <> nothing AndAlso EntryObject.FileName.StartsWith(..) 
如果EntryObject.FileName为nothing,并且EntryObject.FileName.StartsWith(..)

这里使用
使用短路,这意味着如果不满足第一个条件,第二个条件将不会被计算,因此我们无法获得
NullReferenceException
如果您使用linq to entities,那么我认为它不支持StartWith或contains。请参阅本文看起来有一个
EntryObject
对象的
FileName
属性设置为null。在第一种方法中,它不会被检测到,因为您可以将一个空值与其他值进行比较,但在第二种方法中,您试图调用一个空对象上的方法,该方法将引发异常。

这与当前的问题无关。我想您需要
来实现短路。@Gabe谢谢,您当然是正确的。我不是VB方面的专家。答案已更新。