C#中一键值字典的多个值?

时间:2013-10-11 10:01:58

标签: c# dictionary

我在这个对象中有一个Address对象,我有地址线。我的问题是我想为相同的键添加不同的值。这个对象可以有多个地址,所以我需要在字典中添加地址属性作为键和值作为值。

假设地址对象有......

City : Kanpur 
State:UP

并且在地址的第二个对象中有

City : Rajsthan 
State:MP

现在如何将其添加到通用集合中 我试过下面的代码。但没有得到正确的方法。

foreach (var objAddress in entity.Addresses)
{                  
     ds = new Dictionary<string, string>();                           
     ds.Add("City", (objAddress.City == null) ? "" : objAddress.City);
     ds.Add("State", (objAddress.State == null) ? "" : objAddress.State.ToString());
     lsb.Add(ds.ToString());
}

4 个答案:

答案 0 :(得分:3)

只需使用Dictionary<string, List<Address>>

添加到该词典时,如果给定的键尚未包含值,请添加包含该地址的新List<Address>

如果给定的密钥确实包含值,则只需AddAddressList

答案 1 :(得分:1)

使用Lookup类。做:

var cityLookup = entity.Addresses.ToLookup(i => i.City);

然后您可以返回按城市分组的数据。

您可以为您感兴趣的其他属性创建类似的查找。

使用Lookup时,它会返回所有匹配地址的集合。

要查找并使用城市“坎普尔”中的所有地址,您可以执行以下操作:

foreach (var address in cityLookup["Kanpur"])
{
    // your code here 
}

答案 2 :(得分:0)

您可以创建一个包含完整地址的类,并且字典的值可以是一个集合..

Class Address
{
   public string City { get;set; }

   public string State{ get;set; }

   public string Country{ get;set; }
}

var ds = new Dictionary<string,List<Address>>();     

答案 3 :(得分:0)

Got the answer....
I am just creating a list of dictionary type and adding multiple values in it.

 Dictionary<string, string> ds = null; 
 List<Dictionary<string, string>> lsb = new List<Dictionary<string, string>>();
 foreach (var entity in abc.Object)
                            {
                                foreach (var objAddress in entity.Addresses)
                                {
                                     ds.Add("City", (objAddress.City == null) ? "" : objAddress.City);
                                    ds.Add("State", (objAddress.State == null) ? "" : objAddress.State.ToString());
                                    lsb.Add(ds);
                                }