Ho una lista di entità che potrebbe rappresentare così:Come ordinare un elenco di entità con un ordine personalizzato?
Type | Property A | Property B | ...
--------------------------------------
A | ABC | 123 | ...
A | ABC | 123 | ...
D | ABC | 123 | ...
D | ABC | 123 | ...
B | ABC | 123 | ...
C | ABC | 123 | ...
tipo è una stringa e può essere solo uno di 4 valori distinti (e g A, B, C, D). Devo ordinare queste entità per Digitare ma con un ordine personalizzato (ad esempio A, D, B, C).
Ho provato qualcosa di simile:
var orderType = new Dictionary<string, int>() {
{ "A", 0 },
{ "D", 1 },
{ "B", 2 },
{ "C", 3 }
};
return db.MyEntity
.OrderBy(x => orderType[x.Type])
.ToList();
ma ottengo il seguente errore:
LINQ to Entities non riconosce il metodo 'Int32 get_Item (System.String)' metodo, e questo il metodo non può essere tradotto in un'espressione di negozio.
Non capisco questo errore e non so cosa fare con questo ordine. Potresti dirmi come ordinare queste entità tramite Digitare con un ordine personalizzato?
La ragione per cui questo non funziona è perché EntityFramework sarà necessario inviare teh dizionario verso SQL in qualche modo, che non può fare in modo efficiente. – jessehouwing
È possibile ottenere ciò dicendo a EntityFramework come tradurre il dizionario in una funzione basata sui predicati. http://stackoverflow.com/a/16839341/736079 – jessehouwing