2009-04-19 3 views
0

J'ai une table avec une liste de noms. Cette table a une colonne ID qui est un nombre auto-incrémenté. Je voudrais afficher sur mon site Web quelque chose comme,Comment obtenir le numéro d'identification actuellement utilisé le plus élevé dans une table avec LINQ?

"6 523 213 noms créés jusqu'à présent." Donc, j'ai besoin d'obtenir le numéro d'index/ID le plus élevé actuellement de ma table de noms.

Je peux penser à quelques façons de le faire, je pourrais OrderBy ID par desc et sélectionnez le premier. Mais ce n'est peut-être pas le moyen le plus rapide de le faire. Je pourrais aussi coller un champ et l'incrémenter chaque fois que j'insérerais un nouveau nom dans la base de données.

Existe-t-il un LINQ express plus facile/rapide pour cela?

Répondre

3

Vous pouvez simplement utiliser le COUNT ou méthodes MAX de LINQ:

Assumming un DataContext de ce nom et une entité nommée « noms » avec une clé primaire appelée « Id ». Chacune de ces travailleraient:

DataContext db = new DataContext(); 
var nameCount = db.Names.Count(); 

var nameCount = db.Names.Select(n => n.Id).Max(); 
+0

Jose - vous n'avez pas besoin de la sélection, vous pouvez simplement appeler Max avec un sélecteur par exemple var = nameCount db.Names.Max (n => n.Id); –

0

Je pense que ce que vous voulez vraiment faire est compter les lignes - pas obtenir l'indice le plus élevé. Pensez à ce qui se passe quand un enregistrement est supprimé - le nombre de noms enregistrés diminue d'une unité, mais le plus haut indice ne ...

en SQL, vous pouvez utiliser ceci:

SELECT COUNT(ColumnName) FROM TableName 

Si vous avez vraiment vouloir le faire avec LINQ, je pense que this fonctionnera.

Questions connexes