我在这个对象中有一个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());
}
答案 0 :(得分:3)
只需使用Dictionary<string, List<Address>>
。
添加到该词典时,如果给定的键尚未包含值,请添加包含该地址的新List<Address>
。
如果给定的密钥确实包含值,则只需Add
新Address
到List
。
答案 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);
}