3

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

List<Detail> allDetails

Detail
    List<Program> programs

Program
    int ID
    int code

我有一个特定角色有权访问的程序 ID 列表。

int[] specificPrograms

要求是我需要从 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

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

4

1 回答 1

11
var result = allDetails.Where(detail => detail
                 .programs.All(x => SpecificPrograms.Contains(x.ID)));
于 2013-03-19T16:33:27.137 回答