假设我有一个按特定顺序排列的静态 ID 列表:
List<int> ordered = new List<int> {7,2,3,4,5};
我想从维护该顺序的数据库中选择项目。
琐碎的:
var posts = ( from p in Current.DB.Posts
where ordered.Contains(p.Id)
select p).ToList();
返回速度快,但出现故障。
如何从数据库中选择这些帖子并以优雅高效的方式维护顺序?
最佳答案
如果您没有明确包含 order-by 子句,您实际上只有一个集合 - 任何排序纯粹是为了方便,通常恰好在聚集索引 - 但 IIRC 不能保证这一点(我想像服务器选择使用并行性这样的事情会把它扔掉)
包括一个排序依据;在数据库或客户端。或者,将结果放入字典中:
var dict = Current.DB.Posts.Where(p => ordered.Contains(p.Id))
.ToDictionary(p => p.Id);
然后你可以随意拉出你需要的那个,无视顺序。
关于c# - 从表中选择静态组时保持顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4468129/