我有代码,其中我按机会编号对我的要求进行分组,如下所示:
List<Requirement> result = requirements
.GroupBy(l => l.CRMOpportunityNumber)
.Select(cl => new Requirement
{
CRMOpportunityNumber = cl.First().CRMOpportunityNumber,
OpportunityTitle = cl.First().OpportunityTitle,
ClientName = cl.First().ClientName,
TentativeStartDate = cl.Min(c => c.TentativeStartDate),
TotalPositions = cl.Sum(c => c.Required),
RegionName = cl.First().RegionName,
TotalCVProposed = cl.Sum(c => c.Associates.Count),
TotalDeployed = cl.Sum(c => c.Associates.Count(x => x.IsIdentified == true)),
NetGap = cl.Sum(c => c.Required) - cl.Sum(c => c.Associates.Count(x => x.IsIdentified == true)),
}).OrderByDescending(l => l.CRMOpportunityNumber).ToList();
Run Code Online (Sandbox Code Playgroud)
现在我不想在分组(结果)中包含所有 CATEGORY 字段值等于“工作开始”的要求。
需求类有一个字段类别。
在分组之前使用Where子句排除“工作已开始”类别
List<Requirement> result = requirements
.Where(r => r.Category != "work commenced")
.GroupBy(l => l.CRMOpportunityNumber)
.Select(cl => new Requirement
{
CRMOpportunityNumber = cl.First().CRMOpportunityNumber,
OpportunityTitle = cl.First().OpportunityTitle,
ClientName = cl.First().ClientName,
TentativeStartDate = cl.Min(c => c.TentativeStartDate),
TotalPositions = cl.Sum(c => c.Required),
RegionName = cl.First().RegionName,
TotalCVProposed = cl.Sum(c => c.Associates.Count),
TotalDeployed = cl.Sum(c => c.Associates.Count(x => x.IsIdentified == true)),
NetGap = cl.Sum(c => c.Required) - cl.Sum(c => c.Associates.Count(x => x.IsIdentified == true)),
}).OrderByDescending(l => l.CRMOpportunityNumber).ToList();
Run Code Online (Sandbox Code Playgroud)
编辑
如果您想排除所有需求都属于“工作已开始”类别的组,可以:
List<Requirement> result = requirements
.GroupBy(l => l.CRMOpportunityNumber)
.Where(cl => cl.All(l => l.Category != "work commenced"))
.Select(cl => new Requirement
{
CRMOpportunityNumber = cl.First().CRMOpportunityNumber,
OpportunityTitle = cl.First().OpportunityTitle,
ClientName = cl.First().ClientName,
TentativeStartDate = cl.Min(c => c.TentativeStartDate),
TotalPositions = cl.Sum(c => c.Required),
RegionName = cl.First().RegionName,
TotalCVProposed = cl.Sum(c => c.Associates.Count),
TotalDeployed = cl.Sum(c => c.Associates.Count(x => x.IsIdentified == true)),
NetGap = cl.Sum(c => c.Required) - cl.Sum(c => c.Associates.Count(x => x.IsIdentified == true))
}).OrderByDescending(l => l.CRMOpportunityNumber)
.ToList();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3281 次 |
最近记录: |