【发布时间】:2012-02-28 22:39:35
【问题描述】:
我想要我的一些数据的计数列表(计算 open.close 任务的数量等),我想在 1 查询中获取所有计数,所以我不确定我的用我下面的 linq 语句做...
_user 是一个返回当前登录用户信息的对象
_repo 是一个对象,它返回我要选择的任何表的 IQueryable
var counters = (from task in _repo.All<InstructionTask>()
where task.AssignedToCompanyID == _user.CompanyID || task.CompanyID == _user.CompanyID
join instructions in _repo.GetAllMyInstructions(_user) on task.InstructionID equals
instructions.InstructionID
group new {task, instructions}
by new
{
task
}
into g
select new
{
TotalEveryone = g.Count(),
TotalMine = g.Count(),
TotalOpen = g.Count(x => x.task.IsOpen),
TotalClosed = g.Count(c => !c.task.IsOpen)
}).SingleOrDefault();
我是否将我的对象转换为单个对象或默认对象?我得到的例外是,这个序列包含多个元素
注意:我想要整体统计数据,不是针对每个任务,而是针对所有任务 - 不知道如何获得?
【问题讨论】:
-
您的摸索将为每个任务产生一个组,那么您为什么要分组呢?
-
@RuneFS - 我如何将其重写为不分组以获得我想要的?
-
我不知道你想按任务分组什么,最后你的单身让我感到困惑。我不明白为什么您首先要分组,并且查询看起来大多数时候会产生多个结果,当您使用 SingleOrDefault 时会抛出。编写一些示例输入和预期输出,这可能会有所帮助
标签: linq linq-to-sql c#-3.0