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
Qu'est-ce que vous voulez qu'il soit distinct par? Il serait vraiment utile si vous pouviez donner quelques exemples de données et les résultats attendus.
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