需要 parent 或 child 的客户列表; List.Any 在 Selection.Contains
Need a list of clients either parent or child; List.Any in Selection.Contains
我需要一个客户列表,其中要么选择了客户,要么选择了客户的 parent。所以我想要一个列表,其中包括选择 parent 的整个家庭。
所以我想要 ClientList 中 ClientList.ParentNum 或 ClientList.ClientNum 出现在 SelectedList.ClientNum 中的所有项目。
Dim ClientList As New List(Of ClientList.Client)
'add a parent
ClientList.Add(New ClientList.Client With {.ClientNum = "1234"})
'add a child
ClientList.Add(New ClientList.Client With {.ClientNum = "1240", .ParentNum = "1234"})
'add more clients
ClientList.Add(New ClientList.Client With {.ClientNum = "0400"})
ClientList.Add(New ClientList.Client With {.ClientNum = "0500"})
ClientList.Add(New ClientList.Client With {.ClientNum = "0600"})
'select one or more clients
Dim SelectedList As New List(Of ClientList.Client)
SelectedList.Add(New ClientList.Client With {.ClientNum = "1234"})
SelectedList.Add(New ClientList.Client With {.ClientNum = "0400"})
'get ClientList.Any that includes both the parents and their children
Dim printlist As List(Of ClientList.Client) = _
ClientList.Any(Function(x) SelectedList.Contains( _
Function(y As ClientList.Client) y.ClientNum = x.ClientNum _
Or y.ClientNum = x.ParentNum)).tolist
所以在这里我应该从 ClientList 中获取 3 个客户端作为 PrintList。包括的客户端将是 1234、1240 和 0400。
当然这不起作用,因为语法是乱码,但我不确定如何获得我需要的列表。你能帮忙吗?
Here is the compile error: Overload resolution failed because no
accessible 'Contains' can be called with these arguments:
'Public Function Contains(item As PrintOrgs.ClientList.Client) As Boolean': Lambda expression cannot be converted to
'Print_Taxes.PrintOrgs.ClientList.Client' because
'Print_Taxes.PrintOrgs.ClientList.Client' is not a delegate type.
Extension method 'Public Function Contains(value As PrintOrgs.ClientList.Client) As Boolean' defined in
'System.Linq.Enumerable': Lambda expression cannot be converted to
'Print_Taxes.PrintOrgs.ClientList.Client' because
'Print_Taxes.PrintOrgs.ClientList.Client' is not a delegate type.
我明白了;我只需要正确的功能。存在 returns 个布尔值和 Findall returns 个项目。
Dim printlist As List(Of ClientList.Client) = _
ClientList.FindAll(Function(x) SelectedList.Exists( _
Function(y) y.ClientNum = x.ClientNum Or y.ClientNum = x.ParentNum)).ToList
我需要一个客户列表,其中要么选择了客户,要么选择了客户的 parent。所以我想要一个列表,其中包括选择 parent 的整个家庭。
所以我想要 ClientList 中 ClientList.ParentNum 或 ClientList.ClientNum 出现在 SelectedList.ClientNum 中的所有项目。
Dim ClientList As New List(Of ClientList.Client)
'add a parent
ClientList.Add(New ClientList.Client With {.ClientNum = "1234"})
'add a child
ClientList.Add(New ClientList.Client With {.ClientNum = "1240", .ParentNum = "1234"})
'add more clients
ClientList.Add(New ClientList.Client With {.ClientNum = "0400"})
ClientList.Add(New ClientList.Client With {.ClientNum = "0500"})
ClientList.Add(New ClientList.Client With {.ClientNum = "0600"})
'select one or more clients
Dim SelectedList As New List(Of ClientList.Client)
SelectedList.Add(New ClientList.Client With {.ClientNum = "1234"})
SelectedList.Add(New ClientList.Client With {.ClientNum = "0400"})
'get ClientList.Any that includes both the parents and their children
Dim printlist As List(Of ClientList.Client) = _
ClientList.Any(Function(x) SelectedList.Contains( _
Function(y As ClientList.Client) y.ClientNum = x.ClientNum _
Or y.ClientNum = x.ParentNum)).tolist
所以在这里我应该从 ClientList 中获取 3 个客户端作为 PrintList。包括的客户端将是 1234、1240 和 0400。
当然这不起作用,因为语法是乱码,但我不确定如何获得我需要的列表。你能帮忙吗?
Here is the compile error: Overload resolution failed because no accessible 'Contains' can be called with these arguments: 'Public Function Contains(item As PrintOrgs.ClientList.Client) As Boolean': Lambda expression cannot be converted to 'Print_Taxes.PrintOrgs.ClientList.Client' because 'Print_Taxes.PrintOrgs.ClientList.Client' is not a delegate type. Extension method 'Public Function Contains(value As PrintOrgs.ClientList.Client) As Boolean' defined in 'System.Linq.Enumerable': Lambda expression cannot be converted to 'Print_Taxes.PrintOrgs.ClientList.Client' because 'Print_Taxes.PrintOrgs.ClientList.Client' is not a delegate type.
我明白了;我只需要正确的功能。存在 returns 个布尔值和 Findall returns 个项目。
Dim printlist As List(Of ClientList.Client) = _
ClientList.FindAll(Function(x) SelectedList.Exists( _
Function(y) y.ClientNum = x.ClientNum Or y.ClientNum = x.ParentNum)).ToList