LINQ 中的相等性

比较两个句子(可枚举)并确定它们是否完全匹配。

运算符 描述 C# 查询表达式语法 VB 查询表达式语法
SequenceEqual 如果发现两个序列彼此相同,则结果为布尔值 不适用 不适用

SequenceEqual 示例 - Enumerable.SequenceEqual 方法

C#

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

namespace Operators {
   class SequenceEqual {
      static void Main(string[] args) {
      
         Pet barley = new Pet() { Name = "Barley", Age = 4 };
         Pet boots = new Pet() { Name = "Boots", Age = 1 };
         Pet whiskers = new Pet() { Name = "Whiskers", Age = 6 };

         List<Pet> pets1 = new List<Pet>() { barley, boots };
         List<Pet> pets2 = new List<Pet>() { barley, boots };
         List<Pet> pets3 = new List<Pet>() { barley, boots, whiskers };

         bool equal = pets1.SequenceEqual(pets2);
         bool equal3 = pets1.SequenceEqual(pets3);

         Console.WriteLine("The lists pets1 and pets2 {0} equal.", equal ? "are" :"are not");
         Console.WriteLine("The lists pets1 and pets3 {0} equal.", equal3 ? "are" :"are not");

         Console.WriteLine("
Press any key to continue.");
         Console.ReadKey();
      }

      class Pet {
         public string Name { get; set; }
         public int Age { get; set; }
      }
   }
}

VB

Module Module1
   Sub Main()

      Dim barley As New Pet With {.Name = "Barley", .Age = 4}
      Dim boots As New Pet With {.Name = "Boots", .Age = 1}
      Dim whiskers As New Pet With {.Name = "Whiskers", .Age = 6}

      Dim pets1 As New System.Collections.Generic.List(Of Pet)(New Pet() {barley, boots})
      Dim pets2 As New System.Collections.Generic.List(Of Pet)(New Pet() {barley, boots})
      Dim pets3 As New System.Collections.Generic.List(Of Pet)(New Pet() {barley, boots, whiskers})

      Dim equal As Boolean = pets1.SequenceEqual(pets2)
      Dim equal3 As Boolean = pets1.SequenceEqual(pets3)

      Console.WriteLine("The lists pets1 and pets2 {0} equal.", IIf(equal, "are", "are not"))
      Console.WriteLine("The lists pets1 and pets3 {0} equal.", IIf(equal3, "are", "are not"))

      Console.WriteLine(vbLf & "Press any key to continue.")
      Console.ReadKey()
  
   End Sub

   Class Pet
      Public Property Name As String
      Public Property Age As Integer
   End Class
   
End Module

当编译并执行上述 C# 或 VB 代码时,会产生以下结果 −

The lists pets1 and pets2 are equal.
The lists pets1 and pets3 are not equal.

Press any key to continue.

linq_query_operators.html