我正在使用带有ASP.NET MVC的.NET Framework 3.5,而我正在使用Linq To Entity来处理我的数据对象。
我有一个与位置对象有1对多关系的促销对象。
我想要做的是从Promotion对象中获取Locations集合并对它们进行排序,而不将它们放入另一个变量中。有点像...
promotionEntity.Locations.OrderBy(l => l.Distance);
但它对* .Locations集合没有任何作用。有没有办法可以让EntityCollection排序我需要的方式而不将它放在另一个List或变量中?
感谢。
答案 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();