我有一个以逗号分隔的记录 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/