如何从Dictionary<字符串中检索List>

本文关键字:检索 int List 字符串 Dictionary | 更新日期: 2023-09-27 18:18:50

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)在我的代码中是错误的。请告诉我如何从我的字典中的List<int>值中获取每个int

如何从Dictionary<字符串中检索List<int>>

因为每个值的类型都是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;
    }
}

您的值是List<int>,所以您需要将n声明为List<int>

您构建的Dictionary有点难以处理。出于这个原因,Microsoft BCL团队引入了一种新的集合类型MultiValueDictionary。详情请参阅以下连结

http://blogs.msdn.com/b/dotnet/archive/2014/08/05/multidictionary-becomes-multivaluedictionary.aspx

如果你的值是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;
     }
 }