Selezionare Max in Linq in Entity / Entity SQL con conversione del tipo
-
20-08-2019 - |
Domanda
Sto cercando di creare alcune funzionalità CRUD per un database legacy e utilizzo Entity Framework come strumento ORM. Una tabella, "Sites", ha una colonna "Id" di tipo Guid che non viene mai vista dagli utenti e un tipo intero "SiteId" che gli utenti utilizzano per identificare un sito.
Per dio sa quale motivo la colonna SiteId numerica è di tipo varchar (10) nel database, ma ogni SiteId in esso è un numero intero e anche tutti i SiteId futuri saranno numeri interi.
Allo scopo di generare un SiteId nuovo, unico, di tipo intero, come posso fare ciò che è effettivamente un 'SELECT MAX (SiteId)' usando Entity SQL o Linq to Enities ??
In altre parole, come posso convertire ogni valore in una colonna da varchar (10) in un int e selezionare il valore massimo da quell'insieme ??
Sembrava promettente ma linq non è in grado di convertire l'analisi in " procedura di memorizzazione " ...
int x = entities.Sites.Max(s => int.Parse(s.SiteId));
Soluzione
Altri suggerimenti
Funziona ...
String[] numbers = new String[] { "2", "34", "5", "23", "5", "1" };
var max = numbers.Max(x => Int32.Parse(x));