我有一个包含类别及其接受/拒绝计数的列表,但是此列表存在问题。我正在使用LINQ查询来访问数据,并按类别名称和接受/拒绝代码(ResultCode)将它们分组。因此数据采用以下形式:



几乎所有类别都具有AP计数和RJ计数。我想做的是显示每个类别的接受和拒绝计数。我应该使用什么?哈希表不适合这个问题,我尝试使用int List作为值的Dictionary,但是当出现相同的键时无法添加。

更新:

List<ModReportingDM.ReportObjects.AllCategories> allcats = new List<ModReportingDM.ReportObjects.AllCategories>();
Dictionary<string, ModReportingDM.ReportObjects.ResultCode> dict = new Dictionary<string, ModReportingDM.ReportObjects.ResultCode>();
ModReportingDM.ReportObjects.ResultCode x = new ModReportingDM.ReportObjects.ResultCode();
allcats = reportBLL.GetAllCats(model.ModId, model.ReportStartDate, model.ReportEndDate);
        if (allcats != null)
        {
            model.AllCatsList = new List<ModReportingDM.ReportObjects.AllCategories>();

            foreach (var item in allcats)
            {
                x.Accepted = item.Count;
                x.Rejected = item.Count;
                dict.Add(item.Category, x);

            }
        }


查询:

public List<AllCategories> GetAllCats(int modId, DateTime startDate, DateTime endDate)
    {
        using (entities = new ModReportingEntities())
        {
            var query = (from c in entities.Content
                         where c.ModId == modId && c.CreatedTime >= startDate && c.CreatedTime <= endDate && c.Category != null
                         group c by new { c.Category, c.ResultCode } into g
                         orderby g.Count() ascending
                         select new AllCategories
                         {
                             Category = g.Key.Category,
                             ResultCode = g.Key.ResultCode,
                             AcceptCount = g.Count(),
                             RejectCount = g.Count()
                         });

            return query.ToList();
        }
    }

最佳答案

我要做的是创建一个ResultCode类:

public class ResultCode
{
    public int Ap { get; set; }
    public int Rj { get; set; }
}


然后使用Dictionary<string, ResultCode>将每个类别映射到其报告。

您还可以使用Tuple<T1, T2>(我个人不太喜欢)使用不同的方法,该方法将您的密钥映射到两个不同的值:

Dictionary<string, Tuple<int, int>> categoryToResultCode;

关于c# - 单个键的多个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27542159/

10-09 00:04