按两列分组,并使用元组作为键 C# Linq 执行 ToDictionary

本文关键字:元组 ToDictionary 执行 Linq 两列 | 更新日期: 2023-09-27 18:34:17

我有一段代码,我想按两个字段分组,并使用两个字段作为元组键对其执行ToDictionary。我不确定语法。以下是我所拥有的,但问题是它创建了一个包含单个项目的元组。

var count = this.Db.Query<EmployeeCount>(@"select
            employername, ein, month, headcount
            from employerInfo A inner join MonthlyInfo B on (A.Id = B.Id)
            where A.ClientId = @Client",
            new { run.Client })
            .GroupBy(r => new { r.EIN, r.EmployerName})
            .ToDictionary(pair => Tuple.Create<string>(pair.Key.ToString()), pair => pair.ToDictionary(r => (Months)r.month, r => r.headcount));

我的 EmployeeCount 类是

 private class CountQuery
    {
        public string EmployerName;
        public string EIN;
        public int Month;
        public int HeadCount;
    }

我尝试做一个元组.Create,但我不确定如何通知参数将是元组的EIN和雇主名称。

按两列分组,并使用元组作为键 C# Linq 执行 ToDictionary

我自己想通了,如下所示

var count = this.Db.Query<EmployeeCount>(@"select
        employername, ein, month, headcount
        from employerInfo A inner join MonthlyInfo B on (A.Id = B.Id)
        where A.ClientId = @Client",
        new { run.Client })
        .GroupBy(r => new { r.EIN, r.EmployerName}).ToDictionary(pair => Tuple.Create<string,string>(pair.Key.EIN.ToString(),pair.Key.EmployerName), pair => pair.ToDictionary(r => (Months)r.ReportingMonth, r => r.FTECount))