【发布时间】:2016-08-31 20:03:34
【问题描述】:
我需要根据另一个列表中元素的索引对实体框架查询的结果进行排序。
我尝试了其他地方的建议,比如
.ThenBy(m=>list.IndexOf(m.Term))
但我收到 HTTP 500 错误,所以我想知道我是否遗漏了什么。调试时,我得到了这个内部异常。
LINQ to Entities 无法识别方法 'Int32 IndexOf(System.String)' 方法,而且这个方法不能翻译 到商店表达式中。
特别是,我正在考虑这种情况。
private IEnumerable<MiaLog1A> PopulateQuery(string selectedCampus)
{
var list = new List<string> {"No Longer Alphabetical","Fall","Mid","Spring"};
return _db.MiaLog1A.Where(m => m.Campus == selectedCampus)
.OrderBy(m => m.StudentName)
.ThenBy(m=>m.Term)
/* I would like to sort "Term" by the
* order of "list".
*/
.AsEnumerable();
}
有没有办法以这种方式排序,或者我是否仅限于按字典排序或创建连接?
【问题讨论】:
-
this question 的答案可能会有所帮助。
-
@sbat 不,这个问题正在内存中排序,OP 正在使用 EF,它试图将可查询的语句重写为 sql 语句。 500 错误说明了这一点。
-
@Will 我知道这是一个老问题,但发布了一个使用 IQueryable 的答案。
标签: c# entity-framework linq