Wählen Sie Max in Linq to Entities / Entity SQL mit Typ-Konvertierung
-
20-08-2019 - |
Frage
Ich versuche, einige CRUD-Funktionalität für eine Legacy-Datenbank und mit dem Entity Framework als ORM-Tool zu erstellen. Eine Tabelle, ‚Websites‘, hat eine Guid Typ ‚Id‘ Spalte, die nie von den Nutzern und einem Integer-Typ zu sehen ist ‚SITEID‘, die die Nutzer verwenden, um eine Website identitfy.
Für Gott weiß, was Grund der numerischen SITEID Spalte vom Typ varchar (10) ist in der Datenbank, aber jeder SITEID dort eine ganze Zahl und alle zukünftigen SiteIds auch ganze Zahlen sein.
Für die Zwecke der Erstellung eines neuen, einzigartigen, Integer-Typ SITEID zu erzeugen, wie kann ich tun, was effektiv ist ein ‚SELECT MAX (SITEID)‘ mit Entity SQL oder Linq to Enities ??
Mit anderen Worten, wie kann ich jeden Wert in einer Spalte von Varchar konvertieren (10) in eine int und wählen Sie den maximalen Wert aus diesem Satz ??
Das sah vielversprechend aus, aber Linq kann die Parsen in eine „store-Prozedur“ nicht konvertieren ...
int x = entities.Sites.Max(s => int.Parse(s.SiteId));
Lösung
Die Gussverfahren in LINQ to Entities für primitive Typen unterstützt wird. Verwenden Sie das.
Andere Tipps
Das funktioniert ...
String[] numbers = new String[] { "2", "34", "5", "23", "5", "1" };
var max = numbers.Max(x => Int32.Parse(x));