Linq Where Contains ...保持默认顺序

Mat*_*ins 6 c# linq entity-framework

我有一个ID号的集合,我希望返回一些对象,我是通过使用linq语句来实现的,其中使用了包含语句的地方:

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)
                          });
Run Code Online (Sandbox Code Playgroud)

这完全正常,除了我想保持返回集合中的项目顺序与它们在列表中的顺序相同.例如,如果我有一个ID列表:14,603,388,我想要返回的对象的顺序不同,而不是缓存返回的顺序.有没有办法在实体框架中执行此操作,或以任何方式执行此操作而不涉及我编写foreach循环?

谢谢

Mat*_*ins 2

对于任何感兴趣的人,我可以通过加入他们来让他们按照与列表相同的顺序出现,正如雷在上面的评论中提到的那样。

var recentCats = (from i in WebProfile.Current.RecentlyCreatedCategories
                              join b in allCats
                                on i equals b.Id
                              where BoundCategory.ParentItemClass.Id.Equals(b.ParentItemClass.Id)
                              select ...
Run Code Online (Sandbox Code Playgroud)

再次感谢您的所有帮助和回答。