Làm cách nào để lọc từ điển bằng LINQ và đưa từ điển đó trở lại từ điển cùng loại


83

Tôi có từ điển sau:

Dictionary<int,string> dic = new Dictionary<int,string>();
dic[1] = "A";
dic[2] = "B";

Tôi muốn lọc các mục trong từ điển và gán lại kết quả cho cùng một biến:

dic = dic.Where (p => p.Key == 1);

Làm cách nào để trả về kết quả dưới dạng từ điển từ cùng loại [ <int,string>]?

Tôi đã thử ToDictionary, nhưng nó không hoạt động.

Cảm ơn trước.


11
Trong tương lai, nếu bạn đã thử cách tiếp cận rõ ràng nhưng không thấy hiệu quả, vui lòng đăng mã bạn đã thử.
Jon Skeet

Câu trả lời:


189

ToDictionarylà con đường để đi. Nó làm việc - bạn chỉ cần sử dụng nó không đúng cách, có lẽ. Thử đi:

dic = dic.Where(p => p.Key == 1)
         .ToDictionary(p => p.Key, p => p.Value);

Đã nói rằng, tôi cho rằng bạn thực sự muốn một Wherebộ lọc khác , vì bộ lọc hiện tại của bạn sẽ chỉ tìm thấy một khóa ...

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.