2010-10-20 2 views
5

Come si ordina la raccolta interna di un oggetto restituito dal framework entità?Come ordinare la lista interna che viene restituita dall'entità framework?

public class X 
{ 
    public string Field {get; set;} 
    public EntityCollection<Y> Ys {get; set;} 
} 

public class Y 
{ 
    public string Field {get; set;} 
} 

from x in entities.Xs 
orderby x.Field 
select x 

C'è un modo per modificare questa query LINQ per restituire gli oggetti X e hanno anche gli oggetti Y ordinati? O devo ordinare manualmente l'elenco Y quando ritorna?

EDIT:

Questo codice deve restituire un insieme di X digitato oggetti, battitura anonimo non soddisfa i requisiti del progetto corrente.

risposta

3
var sortedList = from x in entities.Xs 
       orderby x.Field 
       select new { 
        Field = x.Field, 
        y = (select y in x.Ys 
         orderby y.Field 
         select y) 
       }; 

Modificato: Se non si desidera che i tipi anonimi, allora fanno questo:

var sortedList = from x in entities.Xs 
       orderby x.Field 
       select new X { 
        Field = x.Field, 
        y = (select y in x.Ys 
         orderby y.Field 
         select y) 
       }; 
+0

ho pensato a questo, ma poi mi sarebbe distribuendo in giro per i tipi anonimi, invece di tipi X. Questo accade per vivere in un livello di servizio, quindi ho bisogno che il tipo rimanga come X. –

+0

@Jerod: Quindi 'seleziona nuova X' invece: http://stackoverflow.com/questions/2450536/semplice-way-to-return -anonymous-types-to-make-mvc-using-linq-possible/2717690 # 2717690 –

+0

@Jerod Il commento di Danny ha battuto la mia modifica ... ma comunque, guarda la mia risposta modificata –