2015-12-08 15 views
0

我需要一个客户端列表,其中选择了客户端或选择了客户端的父代。所以我想要一个列表,其中包括选择父项的整个家庭。需要父母或子女的客户名单; List.Any in Selection.Contains

所以我想要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.

回答

0

我想通了;我只需要正确的功能。 Exists返回布尔值,Findall返回项目。

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