Queryable.Except Methode

Definition

Erzeugt die Differenzmenge von zwei Sequenzen

Überlädt

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

Erzeugt die Differenzmenge zweier Sequenzen mithilfe des Standardgleichheitsvergleichs zum Vergleichen von Werten

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

Erzeugt mithilfe des angegebenen IEqualityComparer<T> die Differenzmenge zweier Sequenzen zum Vergleichen von Werten

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

Erzeugt die Differenzmenge zweier Sequenzen mithilfe des Standardgleichheitsvergleichs zum Vergleichen von Werten

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)

Typparameter

TSource

Der Typ der Elemente der Eingabesequenzen.

Parameter

source1
IQueryable<TSource>

Es wird ein IQueryable<T> zurückgegeben, dessen Elemente nicht auch in source2 enthalten sind.

source2
IEnumerable<TSource>

Die Rückgabesequenz enthält kein IEnumerable<T>, dessen Elemente auch in der ersten Sequenz vorhanden sind.

Gibt zurück

IQueryable<TSource>

Ein IQueryable<T>, das die Differenzmenge der beiden Sequenzen enthält.

Ausnahmen

source1 oder source2 ist null.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) diese Elemente zurückgegeben werden, die nur in der ersten Quellsequenz angezeigt werden.

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

Hinweise

Die Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) Methode generiert eine MethodCallExpression , die das Aufrufen Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode IQueryProvider des dargestellten Objekts durch die CreateQuery<TElement>(Expression) Provider Eigenschaft dessource1 Parameters übergeben.

Das Abfrageverhalten, das aufgrund der Ausführung einer Ausdrucksstruktur auftritt, die aufruft, hängt von der Implementierung des Typs Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) des source1 Parameters ab. Das erwartete Verhalten besteht darin, dass alle Elemente source1 zurückgegeben werden, außer für diejenigen, die auch in source2sind.

Gilt für

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

Erzeugt mithilfe des angegebenen IEqualityComparer<T> die Differenzmenge zweier Sequenzen zum Vergleichen von Werten

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)

Typparameter

TSource

Der Typ der Elemente der Eingabesequenzen.

Parameter

source1
IQueryable<TSource>

Es wird ein IQueryable<T> zurückgegeben, dessen Elemente nicht auch in source2 enthalten sind.

source2
IEnumerable<TSource>

Die Rückgabesequenz enthält kein IEnumerable<T>, dessen Elemente auch in der ersten Sequenz vorhanden sind.

comparer
IEqualityComparer<TSource>

Ein IEqualityComparer<T> zum Vergleichen von Werten.

Gibt zurück

IQueryable<TSource>

Ein IQueryable<T>, das die Differenzmenge der beiden Sequenzen enthält.

Ausnahmen

source1 oder source2 ist null.

Hinweise

Die Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) Methode generiert eine MethodCallExpression , die das Aufrufen Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) selbst als konstruierte generische Methode darstellt. Anschließend wird die MethodCallExpression Methode IQueryProvider des dargestellten Objekts durch die CreateQuery<TElement>(Expression) Provider Eigenschaft dessource1 Parameters übergeben.

Das Abfrageverhalten, das aufgrund der Ausführung einer Ausdrucksstruktur auftritt, die aufruft, hängt von der Implementierung des Typs Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) des source1 Parameters ab. Das erwartete Verhalten besteht darin, dass alle Elemente source1 zurückgegeben werden, außer für diejenigen, die sich auch befinden source2, und comparer verwendet wird, um Werte zu vergleichen.

Gilt für