Tôi đang cố gắng tạo một từ điển từ 2 danh sách trong đó một danh sách chứa các khóa và một danh sách chứa các giá trị. Tôi có thể làm điều đó bằng cách sử dụng cho vòng lặp nhưng tôi đang cố gắng tìm nếu có một cách để làm điều đó bằng cách sử dụng LINQ. Mã mẫu sẽ hữu ích. Cảm ơn!!!!tạo một từ điển bằng cách sử dụng 2 danh sách bằng LINQ
Trả lời
Trong .NET4 bạn có thể sử dụng được xây dựng trong Zip
phương pháp để hợp nhất hai chuỗi, tiếp theo là một cuộc gọi ToDictionary
:
var keys = new List<int> { 1, 2, 3 };
var values = new List<string> { "one", "two", "three" };
var dictionary = keys.Zip(values, (k, v) => new { Key = k, Value = v })
.ToDictionary(x => x.Key, x => x.Value);
List<string> keys = new List<string>();
List<string> values = new List<string>();
Dictionary<string, string> dict = keys.ToDictionary(x => x, x => values[keys.IndexOf(x)]);
Điều này tất nhiên giả định rằng độ dài của mỗi danh sách giống nhau và các phím là duy nhất.
CẬP NHẬT:This answer hiệu quả hơn nhiều và nên được sử dụng cho các danh sách có kích thước không nhỏ.
Bạn có thể bao gồm các chỉ số trong một biểu thức Select
để làm điều này hiệu quả:
var a = new List<string>() { "A", "B", "C" };
var b = new List<string>() { "1", "2", "3" };
var c = a.Select((x, i) => new {key = x, value = b[i]}).ToDictionary(e => e.key, e => e.value);
foreach (var d in c)
Console.WriteLine(d.Key + " = " + d.Value);
Console.ReadKey();
Bạn có thể sử dụng mã này và hoạt động hoàn hảo.
C# Code:
var keys = new List<string> { "Kalu", "Kishan", "Gourav" };
var values = new List<string> { "Singh", "Paneri", "Jain" };
Dictionary<string, string> dictionary = new Dictionary<string, string>();
for (int i = 0; i < keys.Count; i++)
{
dictionary.Add(keys[i].ToString(), values[i].ToString());
}
foreach (var data in dictionary)
{
Console.WriteLine("{0} {1}", data.Key, data.Value);
}
Console.ReadLine();
Output màn hình:
Quá cồng kềnh một nhiệm vụ – netfed
var dic = keys.Zip(values, (k, v) => new { k, v })
.ToDictionary(x => x.k, x => x.v);
Điều này có thực sự thêm bất kỳ thứ gì vào câu trả lời [5 tuổi của [LukeH] (http://stackoverflow.com/users/55847/lukeh) hay không (http://stackoverflow.com/a/) 2434647/215380)? – Rawling
- 1. Xử lý từ điển C# bằng cách sử dụng LINQ
- 2. Python - tạo từ điển từ danh sách các từ điển
- 3. Cách tạo danh sách từ lọc 2 danh sách với LINQ thành đối tượng
- 4. Danh sách từ điển vào danh sách <Type> sử dụng LINQ
- 5. Tạo từ điển từ danh sách python
- 6. Chuyển đổi danh sách sang từ điển bằng Python
- 7. Làm cách nào để chuyển đổi danh sách từ điển sang từ điển danh sách bằng Python?
- 8. cư một cuốn từ điển sử dụng LINQ
- 9. Tạo một danh sách của một loại đối tượng từ một danh sách khác sử dụng LINQ
- 10. Làm cách nào để tạo một nhóm theo từ điển lồng nhau bằng LINQ?
- 11. Sử dụng LINQ và C# để tạo Danh sách mới từ Danh sách cũ
- 12. tạo từ điển từ danh sách biến
- 13. Làm cách nào để kết hợp hai danh sách vào một từ điển bằng Python?
- 14. Từ điển Danh sách
- 15. điển Chia danh sách thành danh sách các từ điển
- 16. Làm cách nào để tìm giá trị tối đa cho mỗi khóa trong Danh sách Từ điển bằng LINQ?
- 17. Tạo danh sách các từ điển rỗng
- 18. Sử dụng LINQ không bằng
- 19. "Khởi tạo" một Danh sách bằng Java?
- 20. Slicing một danh sách sử dụng một biến, bằng Python
- 21. Xóa mục khỏi danh sách bằng linq
- 22. Lấy giá trị từ điển bằng cách sử dụng Reflection
- 23. Tạo một Danh sách Từ điển với cx_Oracle
- 24. Sắp xếp từ điển bằng cách sử dụng toán tử.itemgetter
- 25. Chia chuỗi thành danh sách các chuỗi có độ dài bằng cách sử dụng LINQ
- 26. Cách khởi tạo các phần tử mảng bằng cách sử dụng danh sách bộ khởi tạo?
- 27. Tìm một mục trong Danh sách bằng LINQ?
- 28. Xóa các phiên bản khỏi danh sách bằng cách sử dụng LINQ hoặc Lambda?
- 29. Cách lọc danh sách bằng cách sử dụng Predicate
- 30. Danh sách các bộ vào từ điển
Tôi muốn sử dụng một vòng lặp, thay vì sử dụng này. Vẫn +1 cho câu trả lời. – Steven
Đó là nó. Cảm ơn!!! – VNarasimhaM
tại sao bạn sử dụng vòng lặp thay vì LINQ? Tôi nghĩ rằng mã này là rất nhiều succint và dễ đọc hơn so với vòng lặp for. – VNarasimhaM