我正在尝试从RavenDB中检索数据集,将其按几个类别分组,然后将每个组存储在字典中。检索和分组已经解决。但是,我仍然坚持如何将组合组(4个变量组)放入字典中。换句话说:字典需要填充每个不同的名称/年/月/日组合。我需要这个以后在图表中显示它 - 该部分已经被覆盖。
Dictionary<string, int> chartInformation = new Dictionary<string, int>();
List<string> xAxisCategories = new List<string>();
if (model.Period.Value == Timespan.Day)
{
var groupedRecords = transformedRecords.GroupBy(x => new
{
x.Name,
x.DateTo.Value.Year,
x.DateTo.Value.Month,
x.DateTo.Value.Day
});
foreach (var recordGroup in groupedRecords)
{
if (!chartInformation.ContainsKey(recordGroup.Key.Name,
recordGroup.Key.Year, recordGroup.Key.Month, recordGroup.Key.Day))
// how to do this properly
{
chartInformation.Add(recordGroup.Key.?, 0);
}
if (!xAxisCategories.Contains(recordGroup.Key.?))
{
xAxisCategories.Add(recordGroup.Key.?);
}
foreach (var record in recordGroup)
{
//filling stuff here
}
}
}
答案 0 :(得分:2)
您需要将组密钥投影到如下字符串:
var groupedRecords = transformedRecords.GroupBy(x => String.Format("{0}-{1}-{2}-{3}",
x.Name,
x.DateTo.Value.Year,
x.DateTo.Value.Month,
x.DateTo.Value.Day));
然后,您可以遍历组并检查字典中是否存在某个键:
foreach(var group in groupedRecords)
{
if(!chartInformation.ContainsKey(group.Key))
{
chartInformation.Add(group.Key, 0)
}
}
但请注意,如上所示将您的密钥投影到字符串可能会导致冲突,即属于不同组的行可能会在同一组中结束。
希望这有帮助。