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

Phương thức All() trong LINQ C#

Phương thức All() kiểm tra xem tất cả phần tử trong chuỗi có thỏa mãn một điều kiện hay không. Trả về true nếu tất cả thỏa mãn, false nếu có ít nhất một phần tử không thỏa mãn. Trả về true cho chuỗi rỗng (vacuous truth).

Ví dụ: Kiểm tra tất cả phần tử > 5

int[] arr = { 10, 15, 20 };
bool allGreaterThan5 = arr.AsQueryable().All(val => val > 5);  // true

Mã nguồn hoàn chỉnh

using System;
using System.Linq;

class Demo
{
    static void Main()
    {
        int[] arr = { 10, 15, 20 };
        
        // Kiểm tra tất cả phần tử > 5
        bool res = arr.AsQueryable().All(val => val > 5);
        Console.WriteLine(res);  // True
    }
}

Kết quả

True

So sánh All vs Any

Phương thứcLogicTrả về true khiChuỗi rỗng
All(predicate)∀ x: P(x)Tất cả thỏa mãntrue
Any(predicate)∃ x: P(x)Ít nhất 1 thỏa mãnfalse
Any()∃ xCó ít nhất 1 phần tửfalse

Ví dụ thực tế

// Kiểm tra tất cả sinh viên có điểm >= 50
bool allPassed = students.All(s => s.Score >= 50);

// Kiểm tra không có đơn hàng nào bị hủy
bool noneCancelled = orders.All(o => o.Status != OrderStatus.Cancelled);

// Tương đương logic
bool allPassed2 = !students.Any(s => s.Score < 50);  // De Morgan

Lưu ý

  • Short-circuit: Dừng ngay khi tìm thấy phần tử không thỏa mãn (hiệu quả).
  • Chuỗi rỗng trả về true - logic toán học "vacuous truth". Cần kiểm tra Any() trước nếu muốn false cho rỗng.
  • Dùng All thay cho !Any(!predicate) để code dễ đọc hơn.