我有以下查询
var resources = Db.RESOURCE_Resource
.Include(i => i.RESOURCE_Value.Where(s => s.ApplicatieID == applicationId))
.Include(i => i.RESOURCE_Category)
.Where(w => missingCultureIds.All(a => w.RESOURCE_Value.All(an => an.CultureID != a)));
除了想要返回查询返回的项目之外,我还想返回列表的计数。在此查询之后,将在IQueryable上实现更多过滤器,但我需要事先计算。
我是否可以更改查询以使其包含计数而不会导致多个查询?我想要所有这些项目的计数,但我只想要几个项目的数据(之后用
实现)resources.Skip(pageSize).Take(pageSize*pageNumber)
所以我想生成一个只发送简化的对象列表的查询,但是要计算更多的对象。我知道你可以从像
这样的集合中创建匿名类型 .Select(s => new { property = s.item }
是否有可能做我想要的或者我必须通过存储过程/表值函数来处理它?</ p>
答案 0 :(得分:0)
您需要两个查询,或者您只需要查询更大的数据集,然后使用代码对其进行过滤。哪种方式表现最佳将取决于较大数据集的大小。
一个查询:
DELETE
两个问题:
var resources = Db.RESOURCE_Resource
.Include(i => i.RESOURCE_Value.Where(s => s.ApplicatieID == applicationId))
.Include(i => i.RESOURCE_Category)
.Where(w => missingCultureIds.All(a => w.RESOURCE_Value.All(an => an.CultureID != a))).ToList();
var count = resources.Count();
var results = resources.Skip(pageSize).Take(pageSize*pageNumber);