我知道在刪除重複項之後,有多個有關返回數組中唯一值的答案,但在刪除重複項之後並不是每個元素都是唯一的?我只想返回除去任何重複項之前唯一的值。如果元素在原始數組中重複,我不希望它在我的最終數組中。返回唯一值,但不刪除重複項 - C#
所以此陣...
[0, 1, 1, 2, 3, 3, 3, 4]
應僅返回:
[0, 2, 4]
另一種表達,這將是刪除所有重複,以及那是有史以來複制所有唯一值。
我來自JavaScript背景,用C#語法仍然有點不穩定。 :)
我知道在刪除重複項之後,有多個有關返回數組中唯一值的答案,但在刪除重複項之後並不是每個元素都是唯一的?我只想返回除去任何重複項之前唯一的值。如果元素在原始數組中重複,我不希望它在我的最終數組中。返回唯一值,但不刪除重複項 - C#
所以此陣...
[0, 1, 1, 2, 3, 3, 3, 4]
應僅返回:
[0, 2, 4]
另一種表達,這將是刪除所有重複,以及那是有史以來複制所有唯一值。
我來自JavaScript背景,用C#語法仍然有點不穩定。 :)
最簡單的方法是使用LINQ,由值相同的值進行分組,每組中的計算元素的數量,然後返回團體鍵:
var singleOccurrences = array.GroupBy(x => x)
.Where(g => g.Count() == 1)
.Select(g => g.Key)
.ToArray();
如果你真的需要這對於大量輸入來說是有效的,你可以編寫自己的方法來跟蹤「具有單個值的元素」和「具有多個值的元素」。我想這個雖然:)
開始可以使用GroupBy
方法
var uniqueNumbers = numbers.GroupBy(x => x)
.Where(x => x.Count() == 1)
.Select(g => g.Key)
.ToArray();
這將基本上組中的所有數字,然後採取中有一個號碼的組。
只需用頭髮就可以回覆更快:)謝謝! – ssamakar 2014-10-09 21:09:16
哇,我們同時發佈相同的答案,差不多.. :) – 2014-10-09 20:54:19
謝謝你!輸入將被限制在50個左右的值 - 可能仍然很小,不會遇到任何效率問題。 – ssamakar 2014-10-09 21:12:08