Cách sử dụng phương thức Zip trong LINQ

76 lượt xem

LINQ cung cấp nhiều phương thức độc đáo để xử lý và hợp nhất dữ liệu trên các danh sách, trong đó phương thức Zip. Phương thức Zip áp dụng trên xây dựng một danh sách mới dựa trên các phần tử dữ liệu của hai danh sách đầu vào.

Sau đây là một số ví dụ chúng ta có thể tham khảo để áp dụng phương thức Zip.

Ví dụ 1: Tạo một danh sách mới có kết quả từ danh sách chuỗi và danh sách số với nhau.

// danh sách số
int[] numbers = { 1, 2, 3, 4 }; 

//danh sách chuỗi
string[] words = { "one", "two", "three" }; 

//sử dụng phương thức Zip để nhập chung chuỗi số 
//thành 1 danh sách mới với mỗi phần tử là 1 chuỗi
var numbersAndWords = numbers.Zip(words, (first, second) => first + " " + second);

//vòng for để duyệt và in dữ liệu
foreach (var item in numbersAndWords)
    Console.WriteLine(item);

//Kết quả
// 1 one
// 2 two
// 3 three

Ví dụ 2: Tạo danh sách mới là tích của từng phần tử ở 2 hai danh sách đầu vào

//danh sách số thứ 1
var left = new[] { 1, 2, 3 };

//danh sách số thứ 2
var right = new[] { 10, 20, 30 };

//hợp nhất thành danh sách tích của 2 danh sách trên
var products = left.Zip(right, (m, n) => m * n);

foreach(var item in products)
     Console.WriteLine(item);

//Kết quả
//10
//40
//90

Ví dụ 3: Tạo danh sách mới từ 2 danh sách mảng

List<string> list1 = {"Japan", "Vietnam", "UK"}
List<string> list2 = {"Asia", "SEA", "Europe"}

var list = list1.Zip(list2, (n, w) => 
               new { country = n, area = w });

foreach (var item in list)
      Console.WriteLine(item.country + "_" + item.area);

//Kết quả
//Japan_Asia
//Vietnam_SEA
//UK_Europe

Như vậy, phương thức Zip được dùng bạn muốn hợp nhất 2 danh sách (không cần phải dùng kiểu dữ liệu) với nhau và cho danh sách mới với 1 số tùy biến hữu dụng. Bên cạnh, bạn còn có thể sử dụng Join, Concat có các tính năng tương tự như Zip.

Bình luận Facebook

Để lại bình luận

Hãy là người đầu tiên bình luận!

avatar
1000
  Subscribe  
Thông báo khi có