1

我用点表示法写了一个查询,它工作得很好:

    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 语句。那么如何一个工作而另一个不工作呢?

4

2 回答 2

6

我想应该是db.Person哪个实现了IQueryable.

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

        return (query).ToList();
}
于 2013-06-27T15:04:54.560 回答
0

严格来说,您的查询与“dotted”版本不同。您的原件已订购。因此,除了您没有Person正确访问表的主要问题之外,您的查询应该更像这样:

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

    return query.ToList();
}
于 2013-06-27T15:07:26.973 回答