2016-07-26 11 views
0

Wie kann ich Datensätze aus der Tabelle in der gleichen Reihenfolge der Liste der Ganzzahl abrufen?Abrufen von Datensätzen aus der Tabelle in der Reihenfolge der bereitgestellten Liste in C#

Ich habe ein list<int>

List<int> reorderNarrowerTermIds = new List<int>(); 
reorderNarrowerTermIds.Add(2,7,4,9); 

Jetzt möchte ich in der gleichen Reihenfolge von oben aufgeführte Liste Sätze aus der Tabelle holen.

var lstTerm = _context.table.Where(n => reorderNarrowerTermIds.Contains(n.TermId)).ToList(); 

über Linq-Anweisung gibt Aufzeichnungen in 2,4,7,9 TERMID Sequenz, aber ich mag in 2,7,4,9 TERMID Sequenz.

Ich steckte hier fest.

+0

Maby versuchen '.OrderBy (eine Eigenschaft)' – MKasprzyk

+0

@MK angezeigt werden asprzyk .OrderBy wird es in aufsteigender oder absteigender Reihenfolge setzen, OP will es in der gleichen Reihenfolge wie 'reorderNarrowerTermIds'. –

+0

.OrderBy und .Select (n => n) funktioniert überhaupt nicht. – Ronak

Antwort

3

Dies sollte den Trick, durch den Index des Auftretens der Bestellung:

var lstTerm = _context.table.Where(n => reorderNarrowerTermIds.Contains(n.TermId)).ToList() 
         .OrderBy(x => reorderNarrowerTermIds.IndexOf(x.TermId)).ToList(); 

So Artikel bei Index 0 in reorderNarrowerTermIds haben einen Auftrag Faktor 0 und erste in der Ergebnisliste erscheinen. Gleiches gilt für 1 aufsteigend, 2, etc ...

+0

Danke, es hat mir das Leben gerettet. :) – Ronak

0

noch unsicher, was wie Ihre Informationen sieht, dass Sie von _context.table

List<int> SearchNumbers = new List<int> { 2,7,4,8 }; 
List<int> numbers = new List<int> { 1,2,3,4,5,6,7,8,9 }; 
var lstTerm = numbers.Where(n => SearchNumbers.Contains(n)).ToList(); 

erhalten diese wird angezeigt 2,4,7,8

List<int> SearchNumbers = new List<int> { 2,7,4,8 }; 
List<int> numbers = new List<int> { 1,2,3,4,5,6,7,8,9 }; 
var lstTerm = SearchNumbers.Where(n => numbers.Contains(n)).ToList(); 

Diese 2,7,4,8

+1

Sie sollten die Frage erneut lesen. – NEER

Verwandte Themen