如何从Dictionary <string,list <int =“”>&gt; </string,>中检索

时间:2014-08-19 11:43:33

标签: c# dictionary

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>

4 个答案:

答案 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;
     }
 }