2010-09-10 7 views
4
_db.InstellingAdressens 
    .Where(l => l.GEMEENTE.Contains(gem_query)) 
    .OrderBy(q => q.GEMEENTE) 
    .Select(q => q.GEMEENTE) 
    .Distinct(); 

c'est la requête. il renvoie un List<string> mais les chaînes ne sont pas du tout commandées. Pourquoi le OrderBy n'a aucun effet? et comment le réparer?requête LINQ OrderBy ne fonctionne pas

Répondre

9

Essayez de mettre OrderBy à la fin de votre appel.

_db.InstellingAdressens. 
    Where(l => l.GEMEENTE.Contains(gem_query)). 
    Select(q=>q.GEMEENTE).Distinct(). 
    OrderBy(q=>q).ToList(); 
+0

c'est la seule réponse correcte :) – Stefanvds

1

Changer l'ordre des appels

_db.InstellingAdressens.Where(l => l.GEMEENTE.Contains(gem_query)).Select(q=>q.GEMEENTE).Distinct().OrderBy(q=>q.GEMEENTE).ToList(); 
+0

c'est incorrect. vous ne pouvez pas utiliser le orderby avec q => q.gemeente après le select. – Stefanvds

1

Essayez cette dernière vient de mettre orderby de la requête

_db.InstellingAdressens 
.Where(l => l.GEMEENTE.Contains(gem_query)) 
.Select(q=>q.GEMEENTE) 
.Distinct() 
.OrderBy(q=>q.GEMEENTE).ToList(); 
6

Distinct n'a pas connaissance que vous avez commandé vos articles avant de les obtient, il ne peut pas utiliser ces connaissances. En tant que tel, il doit supposer que les articles ne sont pas ordonnés, et fera donc juste ce qu'il veut avec eux.

Une implémentation typique utilisera une table de hachage, qui n'est pas triée par ce à quoi vous voulez normalement que les éléments soient triés, de sorte que le résultat de l'opération distincte est un ensemble non ordonné.

Alors comme d'autres l'ont suggéré, changez l'ordre de vos appels pour faire la dernière commande, et vous devriez obtenir ce que vous voulez.

+0

merci pour votre explication POURQUOI. C'était très utile et logique maintenant pourquoi cela ne fonctionne pas. – Stefanvds