我試圖使用一個lambda運算式在一個串列的專案中找到一個字串。 我得到的是一個沒有設定為物件的實體錯誤。
以這個簡單的類為例
。Public Class Project
Public ProjectList as New List(Of ProjectType)
結束 類別
Public Class ProjectType
Public NameAsString
結束 類別
在我的代碼中:
Dim MyProjectCollection as New List(of Project)
Dim MyProjectType as New ProjectType
MyProjectType.Name = "Math"/span>
MyProjectCollection.ProjectList.AddItem(MyProjectType) '添加專案到專案中
我試影像這樣只過濾出 "科學 "專案
MyProjectCollection.RemoveAll(function(x as Project) x.ProjectType.Name <> "Science" />)
它出錯了,如果有人能指出我做錯了什么,我將非常感激。 我知道我沒有添加ProjectType.Name = "Science",但只是假設它是一個已經填滿的串列。
我想洗掉所有專案型別中沒有名稱為 "科學 "的專案
。
uj5u.com熱心網友回復:
你可以在第二個Lambda中使用Exists:
MyProjectCollection.RemoveAll(Function(p as Project) Not p。 ProjectList.Exists(Function(pt As ProjectType) pt.Name = "科學")
第一個Lambda遍歷你的串列中的所有Project物件。第二個Lambda檢查Project的ProjectList是否包含一個ProjectType,并將Science作為其Name。如果Science存在,這第二個Lambda將回傳True。你可以使用Not來扭轉這個結果。
uj5u.com熱心網友回復:
我認為你希望你的類是屬性而不是欄位。
宣告2個ProjectType變數并設定它們的Name屬性。
宣告一個Project變數。
添加2個ProjectType變數到Project.ProjectList
現在執行RemoveAll方法。
Public Class Project
Public Property ProjectList As New List(Of ProjectType)
結束 類別
Public Class ProjectType
Public Property Name As String
結束 類別
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1. 點擊
Dim MyProjectType As New ProjectType
MyProjectType.Name = "Math"/span>
Dim MyProjectType2 As New ProjectType
MyProjectType2.Name = "Science"/span>
Dim Prj As New Project
Prj.ProjectList.Add(MyProjectType) '向專案的ProjectList添加專案。
Prj.ProjectList.Add(MyProjectType2)
Debug.Print("List before remove")
For Each pt As 專案型別 In Prj.ProjectList
Debug.Print(pt.Name)
下一步 Prj.ProjectList.RemoveAll()
Prj.ProjectList.RemoveAll(Function(x As ProjectType) x.Name <> "科學")
Debug.Print("洗掉后的串列")
For Each pt As ProjectType In Prj.ProjectList
Debug.Print(pt.Name)
下一步
End Sub
我在移除之前和之后添加了一個測驗回圈。即時視窗中的結果看起來是這樣的。
洗掉前的串列
數學
科學
移除后的串列
科學
uj5u.com熱心網友回復:
我將使用這個:
MyProjectCollection.RemoveAll(Function(p) p。 ProjectList.All(Function(pt) pt.Name <> "Science") )
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/308304.html
標籤:
