gpt4 book ai didi

c# - 在 LINQ 中使用 Count 和 Take

转载 作者:行者123 更新时间:2023-11-30 19:07:55 29 4
gpt4 key购买 nike

有没有办法在使用 Take 运算符时获取整数?

最佳答案

两者都可以。

IEnumerable<T> query = ...complicated query;
int c = query.Count();
query = query.Take(n);

只需在拍摄前执行计数。这将导致查询被执行两次,但我相信这是不可避免的。

如果这是在 Linq2SQL 上下文中,正如您的评论所暗示的那样,那么这实际上将查询数据库两次。就延迟加载而言,这将取决于查询结果的实际使用方式。

例如:如果您有两个表,比如 ProductProductVersion,其中每个 Product 都有多个 ProductVersions 关联通过外键。

如果这是您的查询:

var query = db.Products.Where(p => complicated condition).OrderBy(p => p.Name).ThenBy(...).Select(p => p);

您刚刚选择 Products 但在执行查询之后:

var results = query.ToList();//forces query execution
results[0].ProductVersions;//<-- Lazy loading occurs

如果您引用任何不属于原始查询的外键或相关对象,那么它将被延迟加载。在您的情况下,计数不会导致任何延迟加载,因为它只是返回一个 int。但取决于您对 Take() 的结果实际执行的操作,您可能会或可能不会发生延迟加载。有时很难判断您是否发生了延迟加载,要检查您应该使用 DataContext.Log 属性记录您的查询。

关于c# - 在 LINQ 中使用 Count 和 Take,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2854486/

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