私は、精神的なデバッグ能力を使用して、いくつかのことを想定します。
CampaignManagementService.GetAdvertisers
a を受け取り、 astring
を返しますDictionary<int, Advertiser>
ディクショナリのキーは、返された広告主の ID です。
その上でstring.Join(...)を実行すると、クライアントに簡単に転送してそこに表示できるカンマ区切りのリストが得られます
ディクショナリから取得したすべての広告主のすべてのキャンペーンを何らかの方法で取得する必要があります。
各広告主のキャンペーンはDictionary<int, string>
、キーがキャンペーンの ID で、値がキャンペーンの名前である に保存されます。
これらの仮定の下で:
var ticket = (string) Session["ticket"];
var advertisers = CampaignManagementService.GetAdvertisers(ticket);
広告主辞書が表示されます
var advertiserIDs = advertisers.Select(kv => kv.Key)
var strAdvertiserIDs = advertisers.Select(kv => kv.Key.ToString())
広告主 ID を含むIEnumerable<int>
と をそれぞれ提供します。IEnumerable<string>
var csvAdvertisers = string.Join(", ", strAdvertiserIDs)
ID の元のカンマ区切りのリストが表示されます ( には を受け入れるオーバーロードが.ToArray()
あるため、必要ありません)。次に、すべてのキャンペーンを取得するには、次のようにSelectManyメソッド
を使用できます。string.Join
IEnumerable<string>
var campaignsKvp = advertiserIDs.SelectMany(id =>
CampaignManagementService.GetCampaigns(ticket, id))
これIEnumerable<KeyValuePair<int, string>>
はあまり良いデータ構造ではありませんが、次を使用して変換できます。
var campaigns = campaignsKvp.Select(kvp => kvp.Key.ToString() + "-"+kvp.Value);
var csvCampaigns = string.Join(", ", campaigns)