需要 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