.NET Framework 3.5 EntityCollection OrderBy问题

时间:2010-11-06 20:58:34

标签: entity-framework sql-order-by

我正在使用带有ASP.NET MVC的.NET Framework 3.5,而我正在使用Linq To Entity来处理我的数据对象。

我有一个与位置对象有1对多关系的促销对象。

我想要做的是从Promotion对象中获取Locations集合并对它们进行排序,而不将它们放入另一个变量中。有点像...

promotionEntity.Locations.OrderBy(l => l.Distance);

但它对* .Locations集合没有任何作用。有没有办法可以让EntityCollection排序我需要的方式而不将它放在另一个List或变量中?

感谢。

2 个答案:

答案 0 :(得分:1)

如果位置类型是IEnumerable,您只需指定OrderBy的结果:

promotionEntity.Locations = promotionEntity.Locations.OrderBy(l => l.Distance)

如果类型类似List<Location>,那么您可能需要创建一个新列表:

promotionEntity.Locations = new List<Location>(promotionEntity.Locations.OrderBy(l => l.Distance));

答案 1 :(得分:0)

一种方法是使用EntityCollection.CreateSourceQuery Method

var promotionEntity = context.Promotions.First();
var sq = product.Locations.CreateSourceQuery().OrderBy(l => l.Distance);
promotionEntity.Locations.Attach(sq);

或者,如果您不关心结果对象的类型,可以在匿名类型内进行投影:

var promotionEntity = context.Promotions.Select(p => new 
{
    p,
    Locations = p.Locations.OrderBy(l => l.Distance)
}).First();