2014-05-02 136 views
0

嗨,大家好我是LINQ的新手,所以不是最大的知識,但我很確定這可以用它來完成。如何檢查List的值是否包含在另一個List中?

我有兩個列表,一個propertyAppliances列表和一個engineerSkillsets列表。

的propertyAppliance對象具有器具子對象與applianceTypeId

的engineerSkillset對象簡單地具有此applianceTypeId。

我需要檢查該列表中是否存在具有不存在於工程師技能組列表中的applianceTypeId的設備。

非常感謝!

+0

您是否需要知道哪些家電適合該類別,或僅僅是否存在? –

+0

只是否有任何與applianceTypeId沒有在我的工程師技能組列表中的設備 –

回答

3

如果你只是想知道是否有任何,我會用:

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

這可以有效地創建一組來自propertyAppliances的設備類型,從工程師中刪除設備中的所有設備類型,並查看結果中是否有任何內容。我希望這比檢查每個設備工程師的答案更有效。

1

試試這個:

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

} 

其中listApropertyAllianceslistB名單是engineerSkillsets列表。

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

相關問題