Linq:选择列表包含必须位于另一个列表中的属性的对象

3 c# linq

我已经阅读了许多使用linq和列表的解决方案,但我似乎找不到解决我的问题的方法.我已经描述了下面的情况.详细信息列表包括系统中的每个详细信息.

List<Detail> allDetails

Detail
    List<Program> programs

Program
    int ID
    int code
Run Code Online (Sandbox Code Playgroud)

我有一个特定角色可以访问的程序ID列表.

int[] specificPrograms
Run Code Online (Sandbox Code Playgroud)

要求是我需要从allDetails返回一个Details列表,其中allDetails中Detail的程序列表必须全部包含在specificPrograms列表中.

例如:如果有2个详细信息包含以下程序

Detail 1
Programs   ID        Code
---------------------------------
           1         111
           2         222
           3         333
           4         444

Detail 2
Programs   ID        Code
---------------------------------
           1         111
           3         333 

SpecificPrograms contains IDs: 1, 3, 4
Run Code Online (Sandbox Code Playgroud)

仅返回详细信息2,因为每个详细信息中的程序必须存在于specificPrograms列表中.

cuo*_*gle 11

var result = allDetails.Where(detail => detail
                 .programs.All(x => SpecificPrograms.Contains(x.ID)));
Run Code Online (Sandbox Code Playgroud)