我已经阅读了许多使用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列表中。
答案 0 :(得分:10)
var result = allDetails.Where(detail => detail
.programs.All(x => SpecificPrograms.Contains(x.ID)));