gpt4 book ai didi

c# - 使用 Linq 返回查询中的项目数及其结果集

转载 作者:行者123 更新时间:2023-11-30 14:59:49 25 4
gpt4 key购买 nike

我正在使用 C# MVC4 和 Linq。

我为我的项目使用了依赖注入(inject),这导致我有一个单独的模型项目和一个单独的存储库项目(还有一个用于测试等)。这一切都没有问题。

我将我的查询从 Controller (旧样式)移到存储库(新 DI 样式)中,并注入(inject)它们。它工作正常。

我有一个标准的 linq 查询(选择任何示例,它们足够基本),它正常地从数据库返回一组项目。这里也没有问题。

我的问题是,我想实现分页,而且我教过它很简单。这是我的步骤:

从存储库中获取 linq 查询的结果(注入(inject)到 Controller 中)并将其存储在 var 中。它看起来像:

var results = _someInjectedCode.GetListById(SomeId);

以前,我可以做一些简单的事情,比如:

results.Count()
results.Skip(SomeNum).Take(SomeOtherNum)

但是现在我想要分页,我需要做我的 Skip Take 像这样:

var results = from xyz in _someInjectedCode.GetListById(SomeId).SomeId).Skip(SomeNum).Take(SomeOtherNum)
select new[] {a,id, a.fName, a.lName .....}

问题在于,在列表缩短为 Pre Skip...Take 状态之前,我无法再访问项目的总数,除非我执行两次查询,这意味着两次查询数据库。

解决此问题的最佳方法是什么。

最佳答案

我就是这样做的:

var result = (from n in mycollection 
where n.someprop == "some value"
select n).ToList();
var count = result.Count;

可能还有其他方法,但这是我所知道的最简单的方法。

关于c# - 使用 Linq 返回查询中的项目数及其结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16197115/

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