linq - 使用 LINQ 按自定义/预定义顺序从 EF 数据模型加载记录

标签 linq entity-framework linq-to-entities

我有一个以逗号分隔的记录 ID 列表:

 string = "2207,117,90,2168,120,118,113,112,17"

我需要能够加载与这些 id 关联的记录到它们在该字符串中的位置。

以下是我使用 LINQ to EF 和 LINQ 方法获取数据的代码:

 var styles = db.DataModel.Categories.Where(c => c.CategoryTypeID == 5 && c.Enabled).OrderBy(c => c.Name).ToList();

是否可以修改上述查询以按照记录 ID 在上述记录列表中的顺序获取记录?

我不知道该怎么做。任何帮助/示例将不胜感激。

我正在使用 EF 4.0 + C# 的 LINQ 方法

谢谢!

最佳答案

使用AsEnumerable()后,您可以按输入数组中的索引进行排序:

var input = "2207,117,90,2168,120,118,113,112,17".Split(',');
var recordIds = Array.ConvertAll(input, int.Parse);

var styles = db.DataModel
                .Categories
                .Where(c => c.CategoryTypeID == 5 && c.Enabled && recordIds.Contains(c.ID))
                .AsEnumerable()
                .OrderBy(c => Array.IndexOf(recordIds, c.ID))
                .ToList();

上面假设您要加载 ID 包含在 recordIds 中的所有 Category 对象。检索到它们后,您可以按数组中的索引对它们进行排序。

关于linq - 使用 LINQ 按自定义/预定义顺序从 EF 数据模型加载记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9914200/

相关文章:

c#-4.0 - 从对象列表中提取对象属性列表

c# - 从 SQL(C# 和 Entity Framework )到 mongodb(Go 和 mgo)

c# - 通过 Entity Framework 连接的多方进行排序

entity-framework - Entity Framework 继承

c# - 使用 linq 合并集合

c# - 如何根据经纬度按半径搜索?

c# - 使用 Linq 更新主表时更新子记录的有效方法

c# - 使用 Linq 搜索两个项目的组合

c# - 为什么要编写自定义 LINQ 提供程序?

c# - 如何在嵌套 linq 查询字段中搜索一组单词