我有一个包含类别及其接受/拒绝计数的列表,但是此列表存在问题。我正在使用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/