2015-12-08 22 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