我用点符号写了一个查询,它完美无缺:
public IEnumerable<Person> GetPeople()
{
return db.Person.OrderBy(m => m.LastName).ThenBy(m => m.FirstName).ToList();
}
然后我不得不用一些连接扩展它,因为我用点表示法不是很好,我在查询语法中做了它。我在Person对象上遇到错误“无法找到查询模式的实现”。我删除了所有连接,并将其归结为上述查询的查询语法版本:
public IEnumerable<Person> GetPeople()
{
var query = from p in Person
select p;
return (query).ToList();
}
但是,上面的查询仍然会出现相同的错误。据我所知,它们是同一个查询。我的研究表明,通常的原因是没有实现IEnumerable,但这些查询属于同一个类,'Repository.cs',因此它们共享相同的using语句。那么一个人如何工作而另一个不工作呢?
答案 0 :(得分:6)
我认为应该是db.Person
来实现IQueryable
。
public IEnumerable<Person> GetPeople()
{
var query = from p in db.Person
select p;
return (query).ToList();
}
答案 1 :(得分:0)
严格来说,您的查询与“点”版本不同。您的原件已订购。因此,除了您没有正确访问Person
表的主要问题之外,您的查询应该更像这样:
public IEnumerable<Person> GetPeople()
{
var query = from p in db.Person
orderby p.LastName, p.FirstName
select p;
return query.ToList();
}