2016-03-15 87 views
-1

以下所有條件都泛型列表存在
我有listA的 和我還有其他4名列表(列表1,列表2,項目list3和list4)尋找項目沒有在其他

我如何返回ListA中存在但不存在於其他4個列表中的項目? 即,如果它存在於list1或list2或list3或list4中,我不想返回它。

+0

你用過linq嗎?你的代碼在哪裏? – Eser

+0

[如何:找到兩個列表之間的集合差異(LINQ)](https://msdn.microsoft.com/en-us/library/bb397894.aspx) – LibertyLocked

+0

我會嘗試使用LINQ。 – Aj1

回答

1

如上所述,這基本上是一組差異。扭曲的是,減法集合由幾個集合組成。您需要刪除它們的聯合,或者一次刪除一個。 如果你不關心性能,但只尋找實現簡單,使用Linq:

var result = ListA 
    .Except(list1) 
    .Except(list2) 
    .Except(list3) 
    .Except(list4); 
+0

如果我正在根據項目的屬性進行搜索,該怎麼辦?比方說,我的列表是類型車輛,我想基於vehicle.color – IsaacBok

+0

@IsaacBok查看我的更新,它處理完全這種情況。 – HimBromBeere

-1

像這樣使用LINQ Any

var result = ListA.Where(x => !(
     list1.Any(y => x.MyProp == y.MyProp) || 
     list2.Any(y => x.MyProp == y.MyProp) || 
     list3.Any(y => x.MyProp == y.MyProp) || 
     list4.Any(y => x.MyProp == y.MyProp))); 

Alternativly你也可以覆蓋EqualsGetHashCodeobject來比較你的屬性。