Diciamo che ho una lista di oggetti:ordinazione selettiva con LINQ, ordinamento parziale
var items = new {
new { Order = 0 },
new { Order = 1 },
new { Order = -1 },
new { Order = 3 },
new { Order = 2 },
new { Order = -1 }
};
ho bisogno di ordinare in modo che gli elementi con "Ordine> -1" essere in cima alla lista ordinata dal decreto ascendente e gli articoli rimanenti con "Ordine == -1" li stavano seguendo.
C'è un modo più elegante per fare questo che usare Conact() + Dove() clausole:
var orderedItems = items.Where(x => x.Order > -1).OrderBy(x => x.Order)
.Conact(items.Where(x => x.Order == -1);
in modo che dopo l'ordinamento questa lista sarebbe simile:
var items = new {
new { Order = 0 },
new { Order = 1 },
new { Order = 2 },
new { Order = 3 },
new { Order = -1 },
new { Order = -1 }
};
anche " articoli "la lista nello scenario reale è già un oggetto IQueryable complesso. Ecco perché sto cercando di trovare il modo migliore di fare un ordine così selettivo.
Abbastanza confuso ora ... l'ascesa significherebbe 1,2,3 non sarebbe? IN tale ordinamento, -1 dovrebbe essere automaticamente prima di 0? – flq
Si dovrebbe usare 'Concat', non' Union'. – SLaks
SLaks: Good point –