我有兩個自定義類型「客戶端」的列表。我必須合併這兩個列表,避免可能或男性重複。
我通過LINQ的嘗試都IEnumerable.Except()方法和「NOT IN」的語句,但返回的列表中有仍然包含在其他列表中的元素:無法從列表中排除包含在Linq中的其他列表中的項目
var dupes = getFirstList().ToList(); //List<Client>
var search = getUsersList().Cast<Client>().ToList(); //List<Client>
//The returned items are the same as in original dupes list
var unique = dupes.Except(search).ToList();
//No records are returned, even if debugging I can see that same contactId is in both lists
var u = from k in normalSearch
where !(from d in dupes
select d.ContactId)
.Contains(k.ContactId)
select k;
爲什麼我不能在兩個列表匹配刪除重複?
編輯:
對於除方法我想我必須實現接口IEquatable讓它具有自定義類型的工作。但是在LINQ語句的情況下,我仍然不明白爲什麼沒有返回記錄,因爲在這種情況下「ContactId」字段是一個int。
它的工作原理,謝謝!我認爲在Linq中,我可以「自動」遍歷集合的項目,而不需要使用Any()方法。 – Francesco