Đây là một giải pháp khác mà không cần sử dụng HashSet
.
var items = new List<string>() { "one", "one", "two", "one", "two", "zero" };
var uniqueItems = items.Where((item, index) => items.IndexOf(item) == index);
Nó đã được thông qua từ chủ đề này: javascript - Các giá trị duy nhất trong một mảng
Kiểm tra:
using FluentAssertions;
uniqueItems.Count().Should().Be(3);
uniqueItems.Should().BeEquivalentTo("one", "two", "zero");
Kiểm tra hiệu suất cho List
, HashSet
và SortedSet
. 1 triệu lần lặp:
List: 564 ms
HashSet: 487 ms
SortedSet: 1932 ms
Kiểm tra mã nguồn (ý chính)
HashSet
sẽ mất thứ tự các mục. Một tính năngList
cung cấp.