Reputation: 627
I'm using .NET Framework 3.5 with ASP.NET MVC and I'm using Linq To Entity for my data objects.
I have a Promotion Object that has a 1 to many relationship to the Location object.
What I want to do is take the collection of Locations from the Promotion object and sort those without putting them into another variable. Something like...
promotionEntity.Locations.OrderBy(l => l.Distance);
But it does nothing to the *.Locations collections. Is there a way that I can have that EntityCollection sorted how I need without putting it in another List or variable?
Thanks.
Upvotes: 1
Views: 1916
Reputation: 33216
One way is to use EntityCollection.CreateSourceQuery Method:
var promotionEntity = context.Promotions.First();
var sq = product.Locations.CreateSourceQuery().OrderBy(l => l.Distance);
promotionEntity.Locations.Attach(sq);
Or if you don't care about the resultant object's type can do projection inside an anonymous type:
var promotionEntity = context.Promotions.Select(p => new
{
p,
Locations = p.Locations.OrderBy(l => l.Distance)
}).First();
Upvotes: 0
Reputation: 808
If the type of locations is IEnumerable you can just assign the result of OrderBy:
promotionEntity.Locations = promotionEntity.Locations.OrderBy(l => l.Distance)
If the type is something like List<Location>
then you will probably have to create a new List:
promotionEntity.Locations =
new List<Location>(promotionEntity.Locations.OrderBy(l => l.Distance));
Upvotes: 1