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

3

我已经阅读了许多关于Linq和列表的解决方案,但似乎找不到解决我的问题的方法。以下是我描述的情况。Details列表包括系统中的每个细节。

List<Detail> allDetails

Detail
    List<Program> programs

Program
    int ID
    int code

我有一个程序ID列表,一个特定的角色可以访问。
int[] specificPrograms

我的要求是从所有细节中返回细节列表,其中所有Detail的程序列表都必须包含在specificPrograms列表中。

例如:如果有两个细节包含以下程序

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列表中。


请参见 https://dev59.com/ul7Va4cB1Zd3GeqPHzxb#8486734 - Jon Skeet
1个回答

11
var result = allDetails.Where(detail => detail
                 .programs.All(x => SpecificPrograms.Contains(x.ID)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接