我无法找到发生以下异常的原因。非常感谢任何帮助。
// EdcsEntities is derived from System.Data.Objects.ObjectContext
EdcsEntities db = new EdcsEntities();
var query = from i in db.Colleges
select i;
query = query.SkipWhile<College>(x => x.CollegeID != 100);
List<College> l = query.ToList<College>();
例外:
LINQ to Entities无法识别该方法 “System.Linq.IQueryable
1[EDCS.ServiceLayer.DataAccess.College] SkipWhile[College](System.Linq.IQueryable
1 [EDCS.ServiceLayer.DataAccess.College] System.Linq.Expressions.Expression1[System.Func
2 [EDCS.ServiceLayer.DataAccess.College,System.Boolean]])' 方法,并且此方法无法转换为商店表达式。
答案 0 :(得分:7)
您不能将SkipWhile
与EF一起使用,因为没有好的方法可以将它们转换为SQL。由于SQL查询返回无序集(除非您使用ORDER BY
),因此使用这样的谓词没有意义,因此它们不存在。
在EF中使用SkipWhile
的方法是在调用之前将查询转换为AsEnumerable()
的对象:
query = query.AsEnumerable().SkipWhile(x => x.CollegeID != 100);
当然你可能想做这样的事情:
query = query.OrderBy(x => x.CollegeId).Where(x => x.CollegeID > 100);