我有两节课:
public GeneralClassName
{
public GeneralClassName ()
{
SpecificList = new List<OtherClass>();
}
public string StringValue;
public string OtherStringValue;
public List<OtherClass> SpecificList;
}
和
public OtherClass
{
public string Name;
public string Number;
}
在 JSON 反序列化之后,我得到了一个不错List<GeneralClassName>
的结果,我想要的结果是一个Dictionary<string, int>
,它的值是里面的变量“数字”的总和List<OtherClass>
,List<GeneralClassName>
而键是变量名称。
换句话说,我想按名称对数字分组求和。
现在,我唯一想到的是嵌套的 foreach,类似这样:
Dictionary<string, int> resultDictionary = new Dictionary<string, int>();
foreach(List<OtherClass> listOtherClass in bigListGeneralClass.Select(x => x.SpecificList))
{
foreach(OtherClass otherClass in listOtherClass)
{
int value = 0;
if(resultDictionary.ContainsKey(otherClass.Name))
{
resultDictionary[otherClass.Name] += otherClass.Number;
}
else
{
resultDictionary.Add(otherClass.Name, otherClass.Number);
}
}
}
虽然这个解决方案似乎运作良好,但我一点也不喜欢它。有没有更干净的方法来找到这个结果?也许通过一个不错的 LINQ 查询?