2013-10-11 26 views
0

我有地址對象在這個對象我有地址線。我的問題是我想爲相同的鍵添加不同的值。這個對象可以有多個地址,所以我需要添加地址屬性作爲鍵和值作爲字典中的值。地址之一C#中One Key值字典的多個值?

假設對象有...

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()); 
} 

回答

3

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

添加到該字典時,如果給定鍵尚未包含值,請添加一個新的包含該地址的List<Address>

如果給定的鍵確實包含一個值,那麼簡單地Add新的Address即爲List

+0

可以爲您提供我的演示值的基礎上,一些代碼? –

1

使用Lookup類。做:

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

然後你可以返回數據,按城市分組。

您可以爲您感興趣的其他屬性創建類似的查找。

當您使用查詢,返回所有匹配的地址的集合。

要查找和城市「坎普爾」與所有的地址時,您可以執行以下操作:

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

但我怎麼能判斷其價值,是其地址:假設給定的地址是corresponsence地址1市:坎普爾 狀態:UP 而這個地址是對應地址2 市:Rajsthan 國家:MP –

+0

上面的例子給你一個對象,在那裏你可以查找一個城市,並返回該城市的所有地址。您可以對其他屬性進行類似的查找,例如狀態。然後,根據您要搜索的內容,您可以相應地選擇查找。 – Baldrick

+0

如果在查找對象中我只是添加兩個城市1.屬於通信地址1的Kanpur和屬於通信地址2的2.Jajesthan。現在形成查找對象我怎麼能猜到。你可以提供一些代碼或演示值 –

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>>();  
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); 
           }