public Dictionary<string, List<double>> GetTotalLengt_VolumehofMemberUsed_AlongStaadName()
{
var memberData = new Dictionary<string, List<double>>();
var sec_Dict = _sectionDetails.GetAllMemberIDsWithinATable();
string _stdName = "";
double _memLength = 0.0; double _totalMemLength = 0.0;
double _memVolume = 0.0; double _totalMemVolume = 0.0;
foreach(string s in sec_Dict.Keys)
{
foreach(int n in sec_Dict.Values)
{
_memLength = this.Getlengthofmember(n);
_totalMemLength = _memLength + _totalMemLength;
_memVolume = this.GetVolumeofmember(n);
_totalMemVolume = _memVolume + _totalMemVolume;
}
}
this.STAAD_NAME = _stdName;
this.TOTAL_MEMBER_LENGTH = _totalMemLength;
this.TOTAL_MEMBER_VOLUME = _totalMemVolume;
List<double> list = new List<double>();
list.Add(this.TOTAL_MEMBER_LENGTH);
list.Add(this.TOTAL_MEMBER_VOLUME);
memberData.Add(this.STAAD_NAME, list);
return memberData;
}
我的代码中的foreach(int n in sec_Dict.Values)
错误。请告诉我如何从字典中的int
值中提取每个List<int>
。
答案 0 :(得分:0)
您的值为List<int>
,因此您需要将n
声明为List<int>
答案 1 :(得分:0)
您构建的Dictionary
有点难以处理。出于这个原因,Microsoft BCL团队引入了一种名为MultiValueDictionary
的新集合类型。有关详细信息,请参阅以下链接
http://blogs.msdn.com/b/dotnet/archive/2014/08/05/multidictionary-becomes-multivaluedictionary.aspx
答案 2 :(得分:0)
因为每个值的类型都是List<int>
,并且您希望将其强制转换为int
。
使用此代码:
foreach(string s in sec_Dict.Keys)
{
foreach(int n in sec_Dict[s])
{
_memLength = this.Getlengthofmember(n);
_totalMemLength = _memLength + _totalMemLength;
_memVolume = this.GetVolumeofmember(n);
_totalMemVolume = _memVolume + _totalMemVolume;
}
}
答案 3 :(得分:0)
由于您的值属于List<int>
你应该将你的foreach改为:
foreach (List<int> valueList in sec_Dict.Values)
{
foreach (int n in valueList)
{
_memLength = this.Getlengthofmember(n);
_totalMemLength = _memLength + _totalMemLength;
_memVolume = this.GetVolumeofmember(n);
_totalMemVolume = _memVolume + _totalMemVolume;
}
}