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

196 lượt xem 
 Cập nhật lần cuối: 18/05/2018 lúc 18:35:28
Thể loại: LINQ 

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 đó có phương thức Zip. Phương thức Zip được áp dụng cho việc 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ụ bạn có thể tham khảo để biết cách á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

avatar
1000
  Subscribe  
Notify of