Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Queryable.ThenByDescending<TSource, TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource, TKey>>, IComparer<TKey>)

 

Data di pubblicazione: ottobre 2016

Esegue un successivo ordinamento degli elementi in una sequenza in ordine decrescente utilizzando un operatore di confronto specificato.

Spazio dei nomi:   System.Linq
Assembly:  System.Core (in System.Core.dll)

public static IOrderedQueryable<TSource> ThenByDescending<TSource, TKey>(
	this IOrderedQueryable<TSource> source,
	Expression<Func<TSource, TKey>> keySelector,
	IComparer<TKey> comparer
)

Parametri

source
Type: System.Linq.IOrderedQueryable<TSource>

Oggetto IOrderedQueryable<T> che contiene gli elementi da ordinare.

keySelector
Type: System.Linq.Expressions.Expression<Func<TSource, TKey>>

Funzione per estrarre una chiave da ogni elemento.

comparer
Type: System.Collections.Generic.IComparer<TKey>

Oggetto IComparer<T> per confrontare le chiavi.

Valore restituito

Type: System.Linq.IOrderedQueryable<TSource>

Raccolta i cui elementi sono ordinati in ordine decrescente in base a una chiave.

Parametri tipo

TSource

Tipo degli elementi di source.

TKey

Il tipo della chiave restituita dal keySelector (funzione).

Exception Condition
ArgumentNullException

Il parametro source, il parametro keySelector o il parametro comparer è null.

Questo metodo contiene almeno un parametro di tipo Expression<TDelegate> il cui argomento di tipo è uno del Func<T, TResult> tipi. Per questi parametri, è possibile passare un'espressione lambda e verrà compilato in un Expression<TDelegate>.

Il ThenBy<TSource, TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource, TKey>>, IComparer<TKey>) metodo genera un MethodCallExpression che rappresenta una chiamata ThenBy<TSource, TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource, TKey>>, IComparer<TKey>) stesso come un metodo generico costruito. Passa quindi il MethodCallExpression per il CreateQuery<TElement>(Expression) metodo il IQueryProvider rappresentato dal Provider proprietà del source parametro. Il risultato della chiamata CreateQuery<TElement>(Expression) viene eseguito il cast al tipo IOrderedQueryable<T> e restituiti.

Il comportamento della query che si verifica in seguito all'esecuzione di una struttura ad albero dell'espressione che rappresenta una chiamata ThenBy<TSource, TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource, TKey>>, IComparer<TKey>) dipende dall'implementazione del tipo di source parametro. Il comportamento previsto è che viene eseguito un ordinamento secondario degli elementi di source in ordine decrescente, in base alla chiave ottenuta richiamando keySelector su ogni elemento di source. Tutte definite in precedenza vengono mantenuti gli ordinamenti. Il comparer parametro viene utilizzato per confrontare i valori chiave.

Esempio di codice seguente viene illustrato come utilizzare ThenByDescending<TSource, TKey>(IOrderedQueryable<TSource>, Expression<Func<TSource, TKey>>, IComparer<TKey>) per eseguire un ordinamento secondario degli elementi in una sequenza in ordine decrescente utilizzando un operatore di confronto personalizzato.

public class CaseInsensitiveComparer : IComparer<string>
{
    public int Compare(string x, string y)
    {
        return string.Compare(x, y, true);
    }
}

public static void ThenByDescendingEx1()
{
    string[] fruits = 
    { "apPLe", "baNanA", "apple", "APple", "orange", "BAnana", "ORANGE", "apPLE" };

    // Sort the strings first ascending by their length and 
    // then descending using a custom case insensitive comparer.
    IEnumerable<string> query =
        fruits.AsQueryable()
        .OrderBy(fruit => fruit.Length)
        .ThenByDescending(fruit => fruit, new CaseInsensitiveComparer());

    foreach (string fruit in query)
        Console.WriteLine(fruit);
}

/*
    This code produces the following output:

    apPLe
    apple
    APple
    apPLE
    orange
    ORANGE
    baNanA
    BAnana
*/

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 3.5
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.1
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: