2013-07-30 27 views
5

Nếu tôi có danh sách List<KeyValuePair<string,string>> ví dụ:Làm cách nào để phân biệt danh sách các cặp khóa/giá trị của tôi

["abc","123"] 
["asc","123"] 
["asdgf","123"] 
["abc","123"] 

Tôi làm cách nào để phân biệt danh sách này?

+3

biệt bởi Key, bởi giá trị gia tăng hoặc bằng cả hai –

+1

Sử dụng một 'Từ điển' thay vì một' Danh sách'? – Khan

+1

Từ điển không phải là một câu trả lời hay: Không phân biệt theo giá trị hoặc bởi cả AND và cung cấp cho bạn các ngoại lệ khóa trùng lặp trước đó distinctin 'it ;-) –

Trả lời

12

biệt bởi cả hai KeyValue:

var results = source.Distinct().ToList(); 

biệt bởi Key hoặc Value (chỉ cần thay đổi các tài sản trên GroupBy gọi:?

var results = source.GroupBy(x => x.Key).Select(g => g.First()).ToList(); 
0

Bạn nên sử dụng Bộ (đối tượng ghép đôi) nếu bạn muốn có cặp riêng biệt hoặc Bản đồ/Từ điển nếu bạn muốn có các khóa riêng biệt.

+0

.NET có bộ sưu tập Tập hợp đúng không? –

+2

'ISet ' là giao diện và 'HashSet ' là triển khai. Hoạt động như mong đợi. – Jacob

+0

http://msdn.microsoft.com/en-us/library/bb359438.aspx .net3.5 + hiện – Robadob

Các vấn đề liên quan