2009-06-29 3 views
2

J'essaie de créer des fonctionnalités CRUD pour une base de données existante et d'utiliser Entity Framework en tant qu'outil ORM. Une table, 'Sites', a une colonne 'Id' de type Guid qui n'est jamais vue par les utilisateurs et un type entier 'SiteId' que les utilisateurs utilisent pour identifier un site. Pour Dieu sait quelle raison la colonne SiteId numérique est de type varchar (10) dans la base de données, mais chaque SiteId est un entier et tous les futurs SiteIds seront aussi des entiers.Sélectionnez Max dans Linq pour Entités/Entité SQL avec conversion de type

Dans le but de générer un nouveau SiteId de type entier unique, comment puis-je faire ce qui est effectivement un 'SELECT MAX (SiteId)' en utilisant Entity SQL ou Linq pour Enities ?? En d'autres termes, comment puis-je convertir chaque valeur d'une colonne varchar (10) en un int et sélectionner la valeur maximale de cet ensemble?

Ce semblait prometteur mais LINQ ne peut pas convertir l'analyse syntaxique dans une "procédure de magasin" ...

int x = entities.Sites.Max(s => int.Parse(s.SiteId)); 

Répondre

3

Cela fonctionne ...

String[] numbers = new String[] { "2", "34", "5", "23", "5", "1" }; 

var max = numbers.Max(x => Int32.Parse(x)); 
+1

doux merci mec, L2E ne peut évidemment pas convertir l'analyse en SQL, mais facilement résolu avec 1 étape supplémentaire. Solution finale: string [] x = entités.Sites.Select (s => s.IdIt) .ToArray(); int y = x.Max (i => int.Parse (i)); – andrej351