gpt4 book ai didi

c# - 我在 EF 中以一种好的方式获得列表吗

转载 作者:行者123 更新时间:2023-11-30 21:04:40 24 4
gpt4 key购买 nike

我在 Entity Framework 方面还是个新手。如果问题是假的,请原谅我:)
我有一个域类,它从数据库中获取一些数据的列表:

public IEnumerable<Item> GetItems()
{
return context.Items.ToList();
}

此代码返回数据库中的所有项目。
在网站上,我使用分页,因此每页只需要 10 个项目。
所以我做了这样的事情:

var model = itemsRepository.GetItems().
Where(x => x.CategoryId == categoryId).
OrderByDescending(x => x.CreatedOnDate).
Skip(0).
Take(pageSize);

现在我看到我在这里所做的是,我从数据库中取出所有项目并过滤它们。
如果我将新方法放入域中并在其中放入以下代码,我会得到一些好处吗:

return context.Items.Where(x => x.CategoryId == categoryId).
OrderByDescending(x => x.CreatedOnDate).
Skip(0).
Take(pageSize);

最佳答案

是的。您将获得的好处是,在后一种情况下,您的 LINQ 查询将被转换为 SQL 并在数据库中执行。因此,您的第一个示例会将整个表加载到内存中 - 而第二个示例将在数据库中执行更高效的查询。

本质上,.ToList()中断延迟执行 - 但您返回 IQueryable<T> 也可能有意义而不是 IEnumerable<T> ,然后根据您的要求在上层进行处理。另外,尝试阅读 this question and answer .

关于c# - 我在 EF 中以一种好的方式获得列表吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12205302/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com