Queryable.Except Método

Definición

Proporciona la diferencia de conjuntos de dos secuencias.

Sobrecargas

Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>)

Proporciona la diferencia de conjuntos de dos secuencias utilizando el comparador de igualdad predeterminado para comparar los valores.

Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Proporciona la diferencia de conjuntos de dos secuencias utilizando el objeto IEqualityComparer<T> especificado para comparar los valores.

Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>)

Proporciona la diferencia de conjuntos de dos secuencias utilizando el comparador de igualdad predeterminado para comparar los valores.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TSource> ^ Except(System::Linq::IQueryable<TSource> ^ source1, System::Collections::Generic::IEnumerable<TSource> ^ source2);
public static System.Linq.IQueryable<TSource> Except<TSource> (this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2);
static member Except : System.Linq.IQueryable<'Source> * seq<'Source> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function Except(Of TSource) (source1 As IQueryable(Of TSource), source2 As IEnumerable(Of TSource)) As IQueryable(Of TSource)

Parámetros de tipo

TSource

Tipo de los elementos de las secuencias de entrada.

Parámetros

source1
IQueryable<TSource>

IQueryable<T> cuyos elementos que no se encuentren en source2 se van a devolver.

source2
IEnumerable<TSource>

IEnumerable<T> cuyos elementos que se encuentren también en la primera secuencia no aparecerán en la secuencia devuelta.

Devoluciones

IQueryable<TSource>

IQueryable<T> que contiene la diferencia de conjuntos de las dos secuencias.

Excepciones

source1 o source2 es null.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) para devolver los elementos que solo aparecen en la primera secuencia de origen.

double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
double[] numbers2 = { 2.2 };

// Get the numbers from the first array that
// are NOT in the second array.
IEnumerable<double> onlyInFirstSet =
    numbers1.AsQueryable().Except(numbers2);

foreach (double number in onlyInFirstSet)
    Console.WriteLine(number);

/*
    This code produces the following output:

    2
    2.1
    2.3
    2.4
    2.5
*/
Dim numbers1() As Double = {2.0, 2.1, 2.2, 2.3, 2.4, 2.5}
Dim numbers2() As Double = {2.2}

' Get the numbers from the first array that
' are NOT in the second array.
Dim onlyInFirstSet As IEnumerable(Of Double) = _
    numbers1.AsQueryable().Except(numbers2)

Dim output As New System.Text.StringBuilder
For Each number As Double In onlyInFirstSet
    output.AppendLine(number)
Next

' Display the output.
MsgBox(output.ToString())

' This code produces the following output:
'
' 2
' 2.1
' 2.3
' 2.4
' 2.5

Comentarios

El Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) método genera un MethodCallExpression objeto que representa llamarse Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpression CreateQuery<TElement>(Expression) método del IQueryProvider representado por la Provider propiedad delsource1 parámetro .

El comportamiento de consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) depende de la implementación del tipo del source1 parámetro. El comportamiento esperado es que se devuelven todos los elementos de source1 , excepto los que también están en source2.

Se aplica a

Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)

Proporciona la diferencia de conjuntos de dos secuencias utilizando el objeto IEqualityComparer<T> especificado para comparar los valores.

public:
generic <typename TSource>
[System::Runtime::CompilerServices::Extension]
 static System::Linq::IQueryable<TSource> ^ Except(System::Linq::IQueryable<TSource> ^ source1, System::Collections::Generic::IEnumerable<TSource> ^ source2, System::Collections::Generic::IEqualityComparer<TSource> ^ comparer);
public static System.Linq.IQueryable<TSource> Except<TSource> (this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2, System.Collections.Generic.IEqualityComparer<TSource> comparer);
public static System.Linq.IQueryable<TSource> Except<TSource> (this System.Linq.IQueryable<TSource> source1, System.Collections.Generic.IEnumerable<TSource> source2, System.Collections.Generic.IEqualityComparer<TSource>? comparer);
static member Except : System.Linq.IQueryable<'Source> * seq<'Source> * System.Collections.Generic.IEqualityComparer<'Source> -> System.Linq.IQueryable<'Source>
<Extension()>
Public Function Except(Of TSource) (source1 As IQueryable(Of TSource), source2 As IEnumerable(Of TSource), comparer As IEqualityComparer(Of TSource)) As IQueryable(Of TSource)

Parámetros de tipo

TSource

Tipo de los elementos de las secuencias de entrada.

Parámetros

source1
IQueryable<TSource>

IQueryable<T> cuyos elementos que no se encuentren en source2 se van a devolver.

source2
IEnumerable<TSource>

IEnumerable<T> cuyos elementos que se encuentren también en la primera secuencia no aparecerán en la secuencia devuelta.

comparer
IEqualityComparer<TSource>

IEqualityComparer<T> para comparar valores.

Devoluciones

IQueryable<TSource>

IQueryable<T> que contiene la diferencia de conjuntos de las dos secuencias.

Excepciones

source1 o source2 es null.

Comentarios

El Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) método genera un MethodCallExpression objeto que representa llamarse Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) a sí mismo como un método genérico construido. A continuación, pasa al MethodCallExpression CreateQuery<TElement>(Expression) método del IQueryProvider representado por la Provider propiedad delsource1 parámetro .

El comportamiento de consulta que se produce como resultado de ejecutar un árbol de expresión que representa la llamada Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) depende de la implementación del tipo del source1 parámetro. El comportamiento esperado es que se devuelven todos los elementos de source1 , excepto los que también están en source2y comparer se usan para comparar valores.

Se aplica a