Trong bài này, chúng ta sẽ tìm hiểu 1 ví dụ so sánh 2 danh sách kiểu List với mỗi phần tử kiểu chuỗi (String) sử dụng truy vấn LINQ. Kết quả tìm được là các phần tử chỉ xuất hiện ở danh sách list1 nhưng không xuất hiện ở danh sách list2.
Ví dụ list1 gồm có 4 phần tử “a”, “b”, “c”, “d” và list2 cũng có 4 phần tử “a”, “b”, “e”, “f”. Chúng ta có thể nhận trực diện trực quan rằng phần tử “c” và “d” xuất hiện ở danh sách list1 mà không có trong danh sách list2. Đoạn mã sau giúp chúng ta thực hiện điều đó bằng LINQ.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
namespace LINQ2String
{
class Program
{
static void Main(string[] args)
{
// Hai danh sách List với mỗi phần tử kiểu chuỗi --- dammio.com
List<string> list1 = new List<string>() { "a", "b", "c", "d" };
List<string> list2 = new List<string>() { "a", "b", "e", "f" };
// Phương thức Except để dò tìm phần tử ở list1 nhưng không có ở list2
IEnumerable<string> differenceQuery = list1.Except(list2);
// Xuất kết quả ra màn hình
Console.WriteLine("Cac phan tu xuat hien o list1 nhung khong xuat hien o list2:");
foreach (string s in differenceQuery)
{
Console.WriteLine("\t" + s);
}
// Giữ cửa sở luôn mở trong chế độ debug
Console.WriteLine("Nhan bat ky phim nao de thoat!");
Console.ReadKey();
}
}
}
Trong ví dụ trên phương thức Except được dùng dể dò tìm các phần tử thuộc list1 nhưng không thuộc list2. Một số toán tử truy vấn trong C# như Except<TSource>, Distinct<TSource>, Union<TSource>, và Concat
Nếu không thích dùng Except bạn cũng có thể dùng LINQ thuần như sau:
// Phương thức Except để dò tìm phần tử ở list1 nhưng không có ở list2
IEnumerable<string> differenceQuery = list1.Where(x => !list2.Contains(x));
Kết luận: Bài viết đã nêu ra ví dụ về việc tìm sự sai khác giữa 2 danh sách. Hi vọng các bạn nắm bắt được để áp dụng xây dựng ứng dụng cho riêng mình.
- APA:
Dammio. (2017). [LINQ và chuỗi] Phần 5: Tìm sự khác biệt giữa hai danh sách List. https://www.dammio.com/2017/04/23/linq-va-chuoi-phan-5-tim-su-khac-biet-giua-hai-danh-sach-list. - BibTeX:
@misc{dammio,
author = {Dammio},
title = {[LINQ và chuỗi] Phần 5: Tìm sự khác biệt giữa hai danh sách List},
year = {2017},
url = {https://www.dammio.com/2017/04/23/linq-va-chuoi-phan-5-tim-su-khac-biet-giua-hai-danh-sach-list},
urldate = {2025-12-04}
}

![[LINQ] Phần 3: Các truy vấn cơ bản trong LINQ [LINQ] Phần 3: Các truy vấn cơ bản trong LINQ](https://www.dammio.com/wp-content/uploads/2016/12/dammio_LINQ-410x260.png)
![[ASP.NET MVC] Phần 3: Thêm mới Controller (điều khiển) [ASP.NET MVC] Phần 3: Thêm mới Controller (điều khiển)](https://www.dammio.com/wp-content/uploads/2017/11/MVC_Model-410x260.png)
![[LINQ và chuỗi] Phần 1: Đếm số lần xuất hiện của từ trong đoạn văn bản [LINQ và chuỗi] Phần 1: Đếm số lần xuất hiện của từ trong đoạn văn bản](https://www.dammio.com/wp-content/uploads/2016/12/110.png)
![[ASP.NET Web Forms] Phần 2: Khởi tạo dự án ASP.NET Web Form [ASP.NET Web Forms] Phần 2: Khởi tạo dự án ASP.NET Web Form](https://www.dammio.com/wp-content/uploads/2017/07/Defaultaspx-410x260.png)
![[ASP.NET Web Forms] Phần 1: Giới thiệu về Web Form trong ASP.NET [ASP.NET Web Forms] Phần 1: Giới thiệu về Web Form trong ASP.NET](https://www.dammio.com/wp-content/uploads/2017/05/home-hero-2-410x260.png)