2012-03-21 21 views
0

私はList<T>にオフィスロケーションのプロパティを持っています。実行時に各リストアイテムに新しいプロパティを追加したいと思います。 4.0実行時にリスト<T>にプロパティを追加する

を使用すると、現在私が持っているもの:私がやりたいものを

//create json object for bing maps consumption 
List<Dictionary<string, string>> locations = new List<Dictionary<string, string>>(); 
mlaLocations.ToList().ForEach(x => { 
    locations.Add(new Dictionary<string, string>() { 
     {"where", x.Address.Street1 + ", " + x.Address.City + ", " + x.Address.State + " " + x.Address.PostalCode}, 
     {"email", x.Email}, 
     {"fax", x.Fax}, 
     {"href", "http://www.mlaglobal.com/locations/" + Utils.CleanString(x.Name) + "/" + x.Id}, 
     {"name", x.Name}, 
     {"streetAddress", x.Address.Street1}, 
     {"city", x.Address.City}, 
     {"state", x.Address.State}, 
     {"zip", x.Address.PostalCode} 
    }); 
}); 
JavaScriptSerializer jss = new JavaScriptSerializer(); 
Page.ClientScript.RegisterClientScriptBlock(this.GetType(),"","var locations = " + jss.Serialize(locations.ToList()),true); 

List<Dictionary<string, string>> locationsをelimateだけmlaLocationsオブジェクトへのhrefプロパティを追加することです。あるいは、これをすべて一緒に行うより良い方法があります。

+2

わかりませんか? – CodingGorilla

+0

私はそれについて考えましたが、 'List >'より多くのメモリを占有するでしょうか – bflemi3

+1

私は辞書と動的の両方であるExpandoObjectを考えています –

答えて

4

匿名型は、あなたのケースで正常に動作する必要があります:

var locations = mlaLocations.ToList().Select(x => new { 
     where = x.Address.Street1 + ", " + x.Address.City, 
     email =x.Email } 
); 
+1

-1:これはコンパイル可能コード。 –

+0

ありがとうございます。固定コード。 –

+0

アレクセイさん、ありがとう、私はこのコードが私よりもはるかにクリーンで好きです:) – bflemi3

2

使用ExpandoObjectとdynamic:あなたが使用しているネットのバージョンがありますが、動的なオブジェクトを検討している

List<dynamic> locations = //whatever 

foreach (dynamic location in locations) 
    location.href = "http://www.mlaglobal.com/locations/" 
     + Utils.CleanString(location.Name) + "/" + location.Id; 
関連する問題