我有一個名單,其中MyClass有一個屬性'名稱'。我想知道列表中是否有重複的MyClass具有相同的名稱。如何找出一個列表中是否有重複項與另一個列表?
另外,我有一個不同的列表,我想知道是否有任何重複比較列表A.
我有一個名單,其中MyClass有一個屬性'名稱'。我想知道列表中是否有重複的MyClass具有相同的名稱。如何找出一個列表中是否有重複項與另一個列表?
另外,我有一個不同的列表,我想知道是否有任何重複比較列表A.
要回復第一個問題
我想知道如果有重複 MyClass的與在 列表相同的名稱。
,你可以這樣做:
bool hasDuplicates =
listA.Count != listA.Select(c => c.Name).Distinct().Count();
在回答第二個問題
另外,我有一個不同的列表和我 想知道是否有任何 重複相比,列表A.
你可以這樣做:
bool hasDuplicates =
differentList.Select(c => c.Name).Intersect(listA.Select(c => c.Name)).Any();
我需要一個自定義比較器的第一個anser? – SoftwareSavant 2013-04-25 14:09:34
什麼部分?如果您沒有提供IEqualityComparer
內一個List<MyClass>
list
檢查重複的名稱:
var names = new HashSet<String>();
foreach (MyClass t in list)
if(!names.Add(t.Name))
return "Duplicate name!"
return "No duplicates!"
或變視當有/沒有重複時你想要做什麼。對於兩個單獨列表的情況,只需從一個列表中構建names
集合,並在另一個列表中循環使用這種類型的檢查(具體取決於在第一個列表中僅在第二個列表內重複名稱的情況,或者只是在一個列表和另一個列表之間,當每個列表與其他列表單獨考慮時沒有重複的情況下 - 您的規格太不精確,無法讓我猜測您希望或希望在各種可能的組合中使用哪種列表方式!
提及HashSet +1。謝謝:) – 2009-10-20 05:54:49
@Mahesh,不用客氣 - 哈希表是非常通用的工具(儘管我可以看到@ gwiz的特定.NET答案,當然這個基於哈希的方法是非常廣泛的便攜式;-)。 – 2009-10-20 06:11:33
HashSet確實很甜。提問者將它標記爲C#,這樣我就可以看到IMHO是阻力最小,可讀性最好的C#路徑。我沒有聲稱它的性能=) – 2009-10-20 06:58:33
哪個版本的.NET,您使用哪個VS版本? – 2009-10-20 05:06:05
沒有搜索結果有幫助?我確信這已被多次詢問。 http://stackoverflow.com/search?q=list+duplicates+c%23 – 2009-10-20 05:07:42
@Matt:我想你回答了你自己的問題,如果你能做的只是將我指向一個通用的搜索術語而不是重複的。但是,不,我看,最接近的是從列表中刪除重複項,而不是2個列表的比較。 – esac 2009-10-20 16:18:36