LINQ groupby在条件列上

时间:2015-11-09 15:10:06

标签: linq

我正在从包含医疗图表审核细节的表格中构建报告。重要的列是:

[ProcedureCode] char(5) = Procedure / service performed
[ModifierCode1] varchar(2) = Indicator of non-standard delivery of procedure
[AuditIssueId] int = what was wrong with the use of the procedure and/or modifier code

每个图表可能有0行或多行。两个AuditIssueIds用于:

  1. 程序代码不正确
  2. 修饰符不正确
  3. 报告将AuditIssue的结果按提供者的子组分组,然后审查每个过程或修改器代码(查找所有图表/问题的计数/百分比)。这是第一个获取图表计数的查询:

                var providerCharts =
                from ad in db.AuditDetails
                join p in providers on ad.ProviderId equals p.ProviderId
                where ad.ReviewDate >= startDate && ad.ReviewDate <= endDate
                && (filterSpecialtyId == 0 || p.Specialty.SpecialtyId == filterSpecialtyId)
                group ad by new { ad.ProviderId, ad.ProcedureCode } into grpIssue
                select new
                {
                    ProviderId = grpIssue.Key.ProviderId,
                    ProcedureCode = grpIssue.Key.ProcedureCode,
                    ChartCount = grpIssue.Count()
                };
    

    除了一个AuditIssue - “不正确的修饰符代码”之外,这很有效。此代码显示图表中每个过程的计数,但应按修饰符分组。

    我试图在我的分组中插入这样的条件而没有运气:

    (i.AuditIssueId == AuditIssueIds.IncorrectModifierCode) 
    ? ad.ModifierCode1 : ad.ProcedureCode
    

    我是否需要进行两次查询并将它们联合起来,还是有一种方法可以实现这种类型的动态分组?

    谢谢, 斯科特

0 个答案:

没有答案