Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> C#

Tìm hiệu của hai chuỗi (sequence) bằng Except() trong C#

Phương thức Except() trả về các phần tử có trong chuỗi thứ nhất nhưng không có trong chuỗi thứ hai (phép trừ tập hợp).

Ví dụ minh họa

Hai mảng double:

double[] arr1 = { 10.2, 15.6, 23.3, 30.5, 50.2 };
double[] arr2 = { 15.6, 30.5, 50.2 };

Tìm phần tử chỉ có trong arr1:

IEnumerable<double> res = arr1.AsQueryable().Except(arr2);

Mã nguồn hoàn chỉnh

using System;
using System.Linq;
using System.Collections.Generic;

class Demo
{
    static void Main()
    {
        double[] arr1 = { 10.2, 15.6, 23.3, 30.5, 50.2 };
        double[] arr2 = { 15.6, 30.5, 50.2 };

        Console.WriteLine("Danh sách ban đầu...");
        foreach (double ele in arr1)
            Console.WriteLine(ele);

        IEnumerable<double> res = arr1.AsQueryable().Except(arr2);
        Console.WriteLine("Danh sách mới (hiệu)...");
        foreach (double a in res)
            Console.WriteLine(a);
    }
}

Kết quả đầu ra

Danh sách ban đầu...
10.2
15.6
23.3
30.5
50.2
Danh sách mới (hiệu)...
10.2
23.3

Lưu ý: Except() loại bỏ trùng lặp và không bảo đảm thứ tự. Để giữ thứ tự, dùng Where(x => !arr2.Contains(x)).