LINQ to Entities: Group then Order By

860 Views Asked by At

from what I've read, I can use LINQ to first group, then order each Group by using "SelectMany", which is described here: How to group a IQueryable by property 1 but order by property 2?

But this doesn't work for IQueryable I guess.

We basically get a BusinessObject with an Main-Entity and an IEnumable of Entities, so I'd like to first order by the Main-Entity sequence, then by each Name of the Subentities.

So I guess my query would look like this in LINQ to objects:

            var qry = GetQueryFromSomeWhere();
            qry = qry.OrderBy(f => f.MainEntity.SequenceNumber)
                .ThenBy(f => f.SubEntities.SelectMany(f => f.Name)); 

I could order this Names in the Query-Service, but it should be up the consumer to order the entities as he needs.

Is there a possibility to make this work kindahow without loading all Entities in the Memory?

1

There are 1 best solutions below

2
On BEST ANSWER

If I'am correctly understanding you want to sort records inside each group by record Name. I think that you could accomplish this by ordering records before doing a group by, try this code:

var q = from m in MainEntities
join s in SubEntities on m.Id equals s.MainId
orderby m.SequenceNumber, s.Name
group new { m, s } by m into grp
orderby grp.Key.SequenceNumber
select grp;