如何检查List的值是否包含在另一个List中?

时间:2014-05-02 10:45:16

标签: c# linq list

大家好,我对LINQ比较新,所以不是最了解的知识,但我很确定可以用它来完成。

我有两个列表,一个propertyAppliances列表和一个engineerSkillsets列表。

propertyAppliance对象有一个带有applianceTypeId

的设备子对象

engineerSkillset对象只有这个applianceTypeId。

我需要检查该列表中是否有一个设备,其中有一个在工程师技能组列表中不存在的applianceTypeId。

非常感谢!

3 个答案:

答案 0 :(得分:2)

如果您只想知道是否有,我会使用:

if (propertyAppliances.Select(pa => pa.Appliance.TypeId)
                      .Except(engineers.Select(eng => eng.ApplianceTypeId))
                      .Any())

这有效地创建了一组来自propertyAppliances的设备类型,从工程师中删除了设备中的所有设备类型,并查看结果中是否有任何内容。我希望这比检查每个工程师对每个设备的答案更有效。

答案 1 :(得分:1)

试试这个:

if(listA.Any(x=>list.B.Contains(y=>y.applianceTypeId==x.applianceTypeId))
{

}

其中listApropertyAlliances的列表,listBengineerSkillsets的列表。

答案 2 :(得分:1)

试试这个:

var propertyAppliancesBasedOnApplianceTypeId = (from appliance in propertyAppliance
                                               from skillset in engineerSkillsets
                                               where !appliance.applianceTypeId.Contains(skillset.applianceTypeId)
                                               select appliance).Any();

OR

var propertyAppliancesBasedOnApplianceTypeId = propertyAppliance
                                               .Any(x=>!engineerSkillsets.Contains(x.applianceTypeId));

如果记录存在,两个方法都将返回true,否则它将返回false