2011-07-07 2 views

Répondre

27

Votre question est un peu déroutant, car tout d'abord, il est marqué à la fois avec Entity Framework et LINQ to SQL. Quels ORM utilisez-vous actuellement? Deuxièmement, et plus précisément, vous dites que vous voulez "sort Parent by Children Names". Quel nom d'enfant souhaitez-vous trier? Vous vous rendez compte que vous ne pouvez pas comparer une liste des noms à un autre liste des noms et décider lequel devrait venir avant l'autre? Donc, si je suppose que vous voulez trier par le nom de l'enfant qui vient en premier lexicographiquement, votre solution serait la suivante (@Paul était proche de celui-ci, mais vous devez spécifier la propriété que vous triez):

context. 
Parents. 
OrderBy(p => p. 
      Children. 
      OrderBy(c => c.Name).Select(c => c.Name).FirstOrDefault() 
     ); 

Dans ce cas, prenez en compte la configuration suivante. Le parent PA a les enfants CB et CD tandis que le parent PB a les enfants CC et CA. À la suite du tri, le parent PB passera en premier dans la liste triée, puisque l'enfant CA sera utilisé comme l'enfant «principal» pour PB, alors que CB sera l'enfant «principal» pour PA. Si ce n'est pas le comportement que vous recherchez, veuillez fournir un exemple et une description plus claire.

+0

vraiment merci, ça marche! –

3

Vous pouvez prendre un des noms d'enfants pour trier par, probablement le sélectionner en faisant le tri correspondant?

Quelque chose comme:

IQueryable<Parent> data = context.Parents.OrderBy(
    p=>p.Children.OrderBy(chi => chi.Name).FirstOrDefault()); 
+0

salut Paul. ce linq a jeté l'exception; "Les expressions DbSortClause doivent avoir un type qui est comparable à l'ordre Nom du paramètre: clé" –

+0

Pouvez-vous probablement essayer l'approche décrite ici: http://social.msdn.microsoft.com/forums/fr-FR/adodotnetentityframework/thread/ 3b26c018-a6e5-4cf4-9547-744991ff5ada – Paul

+0

@NuriYILMAZ c'est parce qu'après 'FirstOrDefault()' vous avez besoin de la propriété ou de la colonne, par exemple 'FirstOrDefault(). MyProperty1'. –

Questions connexes