Definir operações no LINQ
Existem quatro operadores para as operações definidas, cada um produzindo um resultado com base em critérios diferentes.
Operador | Descrição | Sintaxe de expressão de consulta C # | Sintaxe de expressão de consulta VB |
---|---|---|---|
Distinto | Resulta em uma lista de valores únicos de uma coleção, filtrando dados duplicados, se houver | Não aplicável | Distinto |
Exceto | Compara os valores de duas coleções e retorna aqueles de uma coleção que não estão na outra coleção | Não aplicável | Não aplicável |
Cruzar | Retorna o conjunto de valores encontrados como idênticos em duas coleções separadas | Não aplicável | Não aplicável |
União | Combina o conteúdo de duas coleções diferentes em uma única lista que também sem qualquer conteúdo duplicado | Não aplicável | Não aplicável |
Exemplo de distinto - expressão de consulta
VB
Module Module1
Sub Main()
Dim classGrades = New System.Collections.Generic.List(Of Integer) From {63, 68, 71, 75, 68, 92, 75}
Dim distinctQuery = From grade In classGrades
Select grade Distinct
Dim sb As New System.Text.StringBuilder("The distinct grades are: ")
For Each number As Integer In distinctQuery
sb.Append(number & " ")
Next
MsgBox(sb.ToString())
End Sub
End Module
Quando o código acima é compilado e executado, ele produz o seguinte resultado -
The distinct grades are: 63 68 71 75 92
Exemplo de método Except - Enumerable.Except
C #
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Operators {
class Program {
static void Main(string[] args) {
double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };
IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);
foreach (double number in onlyInFirstSet)
Console.WriteLine(number);
Console.ReadLine();
}
}
}
VB
Module Module1
Sub Main()
Dim numbers1() As Double = {2.0, 2.1, 2.2, 2.3, 2.4, 2.5}
Dim numbers2() As Double = {2.2}
Dim onlyInFirstSet As IEnumerable(Of Double) = numbers1.Except(numbers2)
Dim output As New System.Text.StringBuilder
For Each number As Double In onlyInFirstSet
output.AppendLine(number)
Console.WriteLine(number)
Next
Console.ReadLine()
End Sub
End Module
Quando o código acima de C # ou VB é compilado e executado, ele produz o seguinte resultado -
2
2.1
2.3
2.4
2.5
Exemplo de método Intersect - Enumerable.Intersect
C #
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Operators {
class Program {
static void Main(string[] args) {
int[] id1 = { 44, 26, 92, 30, 71, 38 };
int[] id2 = { 39, 59, 83, 47, 26, 4, 30 };
IEnumerable<int> both = id1.Intersect(id2);
foreach (int id in both)
Console.WriteLine(id);
Console.ReadLine();
}
}
}
VB
Module Module1
Sub Main()
Dim id1() As Integer = {44, 26, 92, 30, 71, 38}
Dim id2() As Integer = {39, 59, 83, 47, 26, 4, 30}
Dim intersection As IEnumerable(Of Integer) = id1.Intersect(id2)
Dim output As New System.Text.StringBuilder
For Each id As Integer In intersection
output.AppendLine(id)
Console.WriteLine(id)
Next
Console.ReadLine()
End Sub
End Module
Quando o código acima de C # ou VB é compilado e executado, ele produz o seguinte resultado -
26
30
Exemplo de Union - Enumerable.Union Method
C #
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace Operators {
class Program {
static void Main(string[] args) {
int[] ints1 = { 5, 3, 9, 7, 5, 9, 3, 7 };
int[] ints2 = { 8, 3, 6, 4, 4, 9, 1, 0 };
IEnumerable<int> union = ints1.Union(ints2);
foreach (int num in union) {
Console.Write("{0} ", num);
Console.Write("\n");
}
Console.ReadLine();
}
}
}
VB
Module Module1
Sub Main()
Dim ints1() As Integer = {5, 3, 9, 7, 5, 9, 3, 7}
Dim ints2() As Integer = {8, 3, 6, 4, 4, 9, 1, 0}
Dim union As IEnumerable(Of Integer) = ints1.Union(ints2)
Dim output As New System.Text.StringBuilder
For Each num As Integer In union
output.AppendLine(num & " ")
Console.WriteLine(num & " ")
Next
Console.ReadLine()
End Sub
End Module
Quando o código acima de C # ou VB é compilado e executado, ele produz o seguinte resultado -
5
3
9
7
8
6
4
1
0