Queryable.Except Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Vytvoří set rozdíl dvou sekvencí.
Přetížení
Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) |
Vytvoří nastavený rozdíl dvou sekvencí pomocí výchozího porovnávače rovnosti k porovnání hodnot. |
Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) |
Vytvoří set rozdíl dvou sekvencí pomocí zadaného IEqualityComparer<T> porovnání hodnot. |
Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>)
Vytvoří nastavený rozdíl dvou sekvencí pomocí výchozího porovnávače rovnosti k porovnání hodnot.
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)
Parametry typu
- TSource
Typ prvků vstupních sekvencí.
Parametry
- source1
- IQueryable<TSource>
Jejíž IQueryable<T> prvky, které nejsou také v source2
, budou vráceny.
- source2
- IEnumerable<TSource>
Čí IEnumerable<T> prvky, ke kterým dochází také v první sekvenci, se ve vrácené sekvenci nezobrazí.
Návraty
- IQueryable<TSource>
Hodnota IQueryable<T> , která obsahuje nastavený rozdíl dvou sekvencí.
Výjimky
source1
nebo source2
je null
.
Příklady
Následující příklad kódu ukazuje, jak použít Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) k vrácení těchto prvků, které se zobrazují pouze v první zdrojové sekvenci.
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
Poznámky
Metoda Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) vygeneruje MethodCallExpression volání Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) jako vytvořenou obecnou metodu. Pak předá MethodCallExpression metodu IQueryProvider CreateQuery<TElement>(Expression) reprezentované Provider vlastností parametrusource1
.
Chování dotazu, ke kterému dochází v důsledku spuštění stromu výrazu, který představuje volání Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>) , závisí na implementaci typu parametru source1
. Očekávané chování spočívá v tom, že se vrátí všechny prvky v source1
výjimkou prvků, které jsou také v source2
.
Platí pro
Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>)
Vytvoří set rozdíl dvou sekvencí pomocí zadaného IEqualityComparer<T> porovnání hodnot.
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)
Parametry typu
- TSource
Typ prvků vstupních sekvencí.
Parametry
- source1
- IQueryable<TSource>
Jejíž IQueryable<T> prvky, které nejsou také v source2
, budou vráceny.
- source2
- IEnumerable<TSource>
Čí IEnumerable<T> prvky, ke kterým dochází také v první sekvenci, se ve vrácené sekvenci nezobrazí.
- comparer
- IEqualityComparer<TSource>
Porovnání IEqualityComparer<T> hodnot.
Návraty
- IQueryable<TSource>
Hodnota IQueryable<T> , která obsahuje nastavený rozdíl dvou sekvencí.
Výjimky
source1
nebo source2
je null
.
Poznámky
Metoda Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) vygeneruje MethodCallExpression volání Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) jako vytvořenou obecnou metodu. Pak předá MethodCallExpression metodu IQueryProvider CreateQuery<TElement>(Expression) reprezentované Provider vlastností parametrusource1
.
Chování dotazu, ke kterému dochází v důsledku spuštění stromu výrazu, který představuje volání Except<TSource>(IQueryable<TSource>, IEnumerable<TSource>, IEqualityComparer<TSource>) , závisí na implementaci typu parametru source1
. Očekávané chování spočívá v tom, že se vrátí všechny prvky s source1
výjimkou prvků, které jsou také v source2
a comparer
slouží k porovnání hodnot.