這段代碼有效 - 我得到真,然后是假
Dim listDates As New List(Of Date)
listDates.Add("2022-03-15")
Debug.Print(listDates.Contains("2022-03-15"))
Debug.Print(listDates.Contains("2022-03-16"))
如果不是簡單的日期串列,而是一個結構串列,是否可以在沒有回圈的情況下進行類似的測驗?
Public Structure FileData
Public FileName As String
Public FileDate As Date
Public FileType As String
End Structure
Dim listDates2 As New List(Of FileData)
Dim oneFileData As New FileData
oneFileData.FileDate = "2022-03-15"
listDates2.Add(oneFileData)
Debug.Print(listDates2.Contains("2022-03-15"))
Debug.Print(listDates2.Contains("2022-03-16"))
最后兩行給了我"Value of type 'string' cannot be converted to 'FileData'可以理解的語法錯誤。但是如果沒有回圈,有沒有辦法在結構的 FileDate 元素中查找匹配元素?類似這些偽代碼嘗試(也不起作用):
Debug.Print(listDates2.FileDate.Contains("2022-03-15"))
Debug.Print(listDates2(FileDate).Contains("2022-03-15"))
uj5u.com熱心網友回復:
Any擴展方法是你想要的。該Contains方法基本上說“串列是否包含與此相等的專案”,而該Any方法說“串列是否包含滿足此條件的專案”。在你的情況下:
Debug.Print(listDates2.Any(Function(fd) fd.FileDate = "2022-03-15"))
你也可以這樣做:
Debug.Print(listDates2.Select(Function(fd) fd.FileDate).Contains("2022-03-15"))
uj5u.com熱心網友回復:
正如約翰指出的那樣,我沒有使用 Option Strict On。所以下面的代碼使用了 Option Strict On 并且也使用了 John 的答案,稍微改動一下也滿足了 Option Strict On 的要求。
它現在作業正常!
Public Structure FileData
Public FileName As String
Public FileDate As Date
Public FileType As String
End Structure
Dim listDates2 As New List(Of FileData)
Dim oneFileData As New FileData
oneFileData.FileDate = CDate("2022-03-15")
listDates2.Add(oneFileData)
Debug.Print(CType(listDates2.Any(Function(fd) fd.FileDate = CDate("2022-03-15")), String))
Debug.Print(CType(listDates2.Any(Function(fd) fd.FileDate = CDate("2022-03-16")), String))
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/484752.html
標籤:VB.net
