0

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

假设地址对象有...

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

4 回答 4

3

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

添加到该字典时,如果给定键尚不包含值,则添加一个List<Address>包含该地址的新键。

如果给定的键确实包含一个值,Add则只需 new Addressto that List

于 2013-10-11T10:04:20.463 回答
1

使用查找类。做:

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

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

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

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

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

foreach (var address in cityLookup["Kanpur"])
{
    // your code here 
}
于 2013-10-11T10:04:55.497 回答
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);
                                }
于 2013-10-11T12:16:11.913 回答
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>>();     
于 2013-10-11T10:05:54.610 回答