c# - 从表中选择静态组时保持顺序

标签 c# linq linq-to-sql

假设我有一个按特定顺序排列的静态 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/

相关文章:

c# - 我需要知道如何将特定的 XML 反序列化为 C# 中自定义类中定义的对象

c# - LINQ to SQL DataContext 中的多个数据库连接

c# - 网络矩阵搜索

c# - 将 Lambda 表达式树与 IEnumerable 结合使用

c# - 如何获取条件为字符串数组的记录

c# - 如何使用 linq 用默认值填充字典?

c# - 使用 LinqToSQL 将参数传递到表达式规范

c# - "Server failed to resume the transaction"- 使用 LINQ to Classes 的最佳实践

c# - 使用运算符 & |关于 C# 中的枚举?

c# - WPF 中的自动数据更新