检查列表包含所有指定的项目

时间:2017-07-30 18:20:28

标签: c# linq

我有一个包含值1到30的公司类型ID列表 在每笔交易中,我都有一些公司参与了这笔交易。

我想检查特定交易中的所有公司是否都有ID为6,16

我这样使用     list.All(x => x.id == 6 || x.id == 16)

但是,只有当该交易包含所有公司为id 6或16时,这才有效。但是如果一个公司的id为6而其他公司的公司为16,那么这个条件就会失败。

任何帮助?

2 个答案:

答案 0 :(得分:0)

尝试查找不属于任何ID的项目。

var fail = list.Any(item => item.id != 6 && item.id != 16);

UPDATE for sub-type id

var fail = list.Any(item => item.id != 6 && !(item.id == 16 && item.subtypeid == 100));

如果我们做一些布尔代数技巧并将AND逻辑更改为OR逻辑,可能更容易阅读逻辑;

var fail = list.Any(item => !(item.id == 6 || (item.id == 16 && item.subtypeid == 100)));

答案 1 :(得分:0)