Linq查询仅在以点表示法编写时才有效

Bat*_*rog 1 c# linq entity-framework asp.net-mvc-3

我用点符号写了一个查询,它完美无缺:

    public IEnumerable<Person> GetPeople()
    {
        return db.Person.OrderBy(m => m.LastName).ThenBy(m => m.FirstName).ToList();
    }
Run Code Online (Sandbox Code Playgroud)

然后我不得不用一些连接扩展它,因为我用点表示法不太好,我在查询语法中做了它.我在Person对象上遇到错误"无法找到查询模式的实现".我删除了所有连接并将其归结为上述查询的查询语法版本:

    public IEnumerable<Person> GetPeople()
    {
        var query = from p in Person
                    select p;

        return (query).ToList();
    }
Run Code Online (Sandbox Code Playgroud)

但是,上面的查询仍然会得到相同的错误.据我所知,它们是同一个查询.我的研究表明,通常的原因是没有实现IEnumerable,但这些查询属于同一个类,'Repository.cs',因此它们共享相同的using语句.那么一个人怎么能工作呢?

mip*_*e34 6

我想它应该是db.Person实现的IQueryable.

public IEnumerable<Person> GetPeople()
{
        var query = from p in db.Person
                    select p;

        return (query).ToList();
}
Run Code Online (Sandbox Code Playgroud)