Computer >> Máy Tính >  >> Lập trình >> C#

Làm cách nào để tìm các mục trong một danh sách mà không có trong danh sách khác trong C #?

Toán tử LINQ Ngoại trừ nằm trong danh mục Đặt toán tử trong LINQ

Phương thức Ngoại trừ () yêu cầu hai tập hợp và tìm những phần tử không có trong tập hợp thứ hai

Ngoại trừ phương thức mở rộng không trả về kết quả chính xác cho tập hợp các kiểu phức tạp.

Ví dụ sử dụng phương thức Ngoại trừ ()

using System;
using System.Collections.Generic;
using System.Linq;
namespace DemoApplication {
   class Program {
      static void Main(string[] args) {
         List<string> animalsList1 = new List<string> {
            "tiger", "lion", "dog"
         };
         Console.WriteLine($"Values in List1:");
         foreach (var val in animalsList1) {
            Console.WriteLine($"{val}");
         }
         List<string> animalsList2 = new List<string> {
            "tiger", "cat", "deer"
         };
         Console.WriteLine($"Values in List2:");
         foreach (var val in animalsList1) {
            Console.WriteLine($"{val}");
         }
         var animalsList3 = animalsList1.Except(animalsList2);
         Console.WriteLine($"Value in List1 that are not in List2:");
         foreach (var val in animalsList3) {
            Console.WriteLine($"{val}");
         }
         Console.ReadLine();
      }
   }
}

Đầu ra

Đầu ra của đoạn mã trên là

Values in List1:
tiger
lion
dog
Values in List2:
tiger
lion
dog
Value in List1 that are not in List2:
lion
dog

Ví dụ sử dụng mệnh đề Where

using System;
using System.Collections.Generic;
using System.Linq;
namespace DemoApplication {
   class Program {
      static void Main(string[] args) {
         List<Fruit> fruitsList1 = new List<Fruit> {
            new Fruit {
               Name = "Apple",
               Size = "Small"
            },
            new Fruit {
               Name = "Orange",
               Size = "Small"
            }
         };
         Console.WriteLine($"Values in List1:");
         foreach (var val in fruitsList1) {
            Console.WriteLine($"{val.Name}");
         }
         List<Fruit> fruitsList2 = new List<Fruit> {
            new Fruit {
               Name = "Apple",
               Size = "Small"
            },
            new Fruit {
               Name = "Mango",
               Size = "Small"
            }
         };
         Console.WriteLine($"Values in List2:");
         foreach (var val in fruitsList2) {
            Console.WriteLine($"{val.Name}");
         }
         var fruitsList3 = fruitsList1.Where(f1 => fruitsList2.All(f2 => f2.Name != f1.Name));
         Console.WriteLine($"Values in List1 that are not in List2:");
         foreach (var val in fruitsList3) {
            Console.WriteLine($"{val.Name}");
         }
         Console.ReadLine();
      }
   }
   public class Fruit {
      public string Name { get; set; }
      public string Size { get; set; }
   }
}

Đầu ra

Đầu ra của đoạn mã trên là

Values in List1:
Apple
Orange
Values in List2:
Apple
Mango
Values in List1 that are not in List2:
Orange