2013-06-20 19 views
16

Tôi muốn lọc ra một số cặp từ điển mà tôi không cần xử lý thêm. Kiểm tra mẫu mã này ra:Làm cách nào để trích xuất một tập hợp con của từ điển sang một tập hợp con khác trong C#?

static void Main(string[] args) 
{ 
    var source = new Dictionary<string, dynamic>(); 

    source.Add("number", 1); 
    source.Add("string1", "One"); 
    source.Add("string2", "Two"); 
    source.Add("string3", "Three"); 

    var onlyStrings = source.Where(s => s.Key != "number").ToDictionary(s => s.Key); 
} 

Trong trường hợp này, onlyStrings là một Dictionary<string, KeyValuePair<string, object>>

nhưng tôi muốn onlyStrings có các cặp sau đây (một tập hợp con của từ điển nguồn):

  • chính : "string1", Giá trị: "Một"
  • Khóa: "string2", Giá trị: "Hai"
  • Khoá: "string3", Giá trị: "Ba"

Cách tốt nhất để có được kết quả như vậy?

Trả lời

25

Có một tình trạng quá tải cho các phương pháp ToDictionary đó cũng cho phép một đại biểu elementSelector:

var onlyStrings = source.Where(s => s.Key != "number") 
         .ToDictionary(dict => dict.Key, dict => dict.Value); 
Các vấn đề liên quan