LINQ : Distinct et Orderby
Je suis en train d'utiliser LINQ (EF) pour obtenir une liste DISTINCTE et ensuite de les trier. Tous les exemples que j'ai trouvé trier le résultat basé sur la valeur DISTINCTE. Mais je veux faire le tri sur un champ différent.
Exemple: Table avec 2 champs (canvasSize et canvasLength);
var sizes = (from s in ent.competitors
select s.canvasSize).Distinct().OrderBy(x => x);
Tous les exemples que j'ai trouvés donner ce type de réponse. Mais il trie par canvasSize alors que, je veux trier par canvasLength.
Je suis coincé ... Tous les conseils sont les bienvenus ...
Par J. Skeet > informations Supplémentaires:
company canvasSize canvasLength
abc 8x10 8
d 8x10 8
e 10x10 10
f 10x10 10
g 40x40 40
Je voudrais qu'il soit distinct sur canvasSize. Le problème est que lors du tri, il en résulte dans cet ordre:
10x10
40x40
8x10
Je voudrais les mêmes résultats, mais triés à l'aide de canvasLength voici donc le résultat:
8x10
10x10
40x40
Alors, voulez-vous de les deux canvasSize et canvasLength dans les résultats, triés par canvasLength?
Combien de données vous occupez-vous? Le chemin de moindre résistance est à effectuer votre orderby sur Une colonne au niveau de DB, sélectionner les deux colonnes et de les mettre en mémoire, puis sélectionnez votre seule colonne B et de l'utilisation distinctes sur le côté de la mémoire. C'est simple à écrire. Cependant, il pourrait ne pas bien si vous avez beaucoup de données. (Cela suppose que la base de données ne garantit pas le maintien de l'ordre lors de l'utilisation Distinctes. Si elle le fait, puis coller à la DB.)
OriginalL'auteur nanonerd | 2013-01-31
Vous devez vous connecter pour publier un commentaire.
Je pense que ce que vous êtes après, peut-être quelque chose comme ceci:
Mise à jour
Basé sur les informations supplémentaires dans votre question, les éléments suivants doivent faire ce que vous voulez:
canvasSize
est identique, donc, estcanvasLength
. Si elles varient de façon indépendante, ce serait un problème.D'accord, mais alors il faudrait juste ajouter un sélecteur à clé à la
Distinct()
appel.c'est presque la réponse, je veux seulement canvasSize dans le résultat mais je veux que le résultat final triés par canvasLength
Il n'y a pas de sélecteur à clé pour
Distinct()
, au moins sur la norme IQueryable.Parfait ! Je ne sais pas ce que vous les gars ressemble dans la vraie vie ... mais derrière le voile de débordement de pile, les gars, vous êtes tous beaux ... j'ai passé des heures à heures à la recherche de cette sur mon propre. Je poste sur plus et il a obtenu répondu parfaitement à moins de 10 min ... merci!
OriginalL'auteur Andrew Cooper
OriginalL'auteur Sergey Berezovskiy