Chuyển đổi từ điển sang danh sách tập hợp trong C #


93

Tôi gặp sự cố khi cố gắng chuyển đổi từ điển sang danh sách.

Ví dụ nếu tôi có một từ điển với chuỗi mẫu là khóa và chuỗi là giá trị. Sau đó, tôi muốn chuyển đổi khóa từ điển thành bộ sưu tập danh sách dưới dạng chuỗi.

Dictionary<string, string> dicNumber = new Dictionary<string, string>();
List<string> listNumber = new List<string>();

dicNumber.Add("1", "First");
dicNumber.Add("2", "Second");
dicNumber.Add("3", "Third");

// So the code may something look like this
//listNumber = dicNumber.Select(??????);

5
Bạn đang yêu cầu một danh sách các khóa từ từ điển? Nếu vậy, có Thuộc tính Khóa trên Từ điển sẽ cung cấp cho bạn điều đó.
Brian Rasmussen,

Câu trả lời:


175

Để chuyển đổi các Khóa thành một Danh sách của riêng chúng:

listNumber = dicNumber.Select(kvp => kvp.Key).ToList();

Hoặc bạn có thể rút ngắn nó và thậm chí không cần sử dụng select:

listNumber = dicNumber.Keys.ToList();

@Brian - Tôi đã đạt được điều đó trong bản chỉnh sửa của mình. Tôi muốn hiển thị phương pháp chọn trước vì đó là những gì OP hỏi về và sau đó hiển thị phương pháp thay thế. :-)
Justin Niessner 19/10/10

Vì vậy, tôi đã tìm ra, vì vậy tôi đã xóa bình luận của mình.
Brian Rasmussen

1
điều này thực sự hữu ích. Tôi cần phải áp dụng .Where (...) cho dict trước khi trả về các khóa, nhưng phương thức đó không trả về từ điển, vì vậy tôi không thể truy cập thuộc tính Keys. sử dụng này chọn sau khi nơi làm việc rất lớn
Martín Coll

22

Ngoài ra:

var keys = new List<string>(dicNumber.Keys);

4
Làm việc với .NET Compact Framework 2.0 (vì vậy không có Linq), đây là lựa chọn tốt nhất cho tôi.
Michael Murphy

Nếu bạn không thể sử dụng LINQ, tùy chọn này có vẻ là tốt nhất.
user2000950

17

Nếu bạn muốn sử dụng Linq thì bạn có thể sử dụng đoạn mã sau:

var listNumber = dicNumber.Keys.ToList();

9

Nếu bạn muốn chuyển đổi các phím:

List<string> listNumber = dicNumber.Keys.ToList();

khác nếu bạn muốn chuyển đổi Giá trị:

List<string> listNumber = dicNumber.Values.ToList();

Đây hoạt động ý chí, nhưng có thể không theo thứ tự bạn mong đợi, thậm chí dict được lệnh bằng phím trước, dict.Values không phải là ...
BooNonMooN


3

Nếu bạn muốn chuyển bộ sưu tập khóa Từ điển vào một đối số phương thức.

List<string> lstKeys = Dict.Keys;
Methodname(lstKeys);
-------------------
void MethodName(List<String> lstkeys)
{
    `enter code here`
    //Do ur task
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.