【发布时间】:2012-01-29 23:55:31
【问题描述】:
我有一个 ID 号集合,我希望为其返回一些对象,我正在使用 linq 语句和 where 使用 contains 语句:
var recentCats = (from i in EntityCache.Default.GetAll<Categories>()
where WebProfile.Current.RecentlyCreatedCategories.Contains(i.Id)
&& BoundCategory.ParentItemClass.Id.Equals(i.ParentItemClass.Id)
select new CategoryInfo()
{
Category = i,
ClassId = i.ParentItemClass.Id,
ClassImage = NamedResourceManager.GetResourceBinary(i.ParentItemClass.NameResourceId)
});
这工作得很好,除了我想保持返回集合中项目的顺序与它们在进入列表中的顺序相同。例如,如果我有一个 ID 列表:14、603、388 ,我希望返回的对象的顺序相同,而不是缓存返回的顺序。实体框架中是否有任何方法可以做到这一点,或者任何不涉及我编写 foreach 循环的方法?
谢谢
【问题讨论】:
-
很抱歉没有时间给出完整的答案,但我可以给你一个提示。它涉及将您的 ID 列表加入类别列表,而不是使用
where ... contains -
我认为这里的问题是,SQL 没有顺序,除非您明确订购。 SQL 可以按任意顺序返回,所以没有默认顺序要保留。
标签: c# linq entity-framework