2
string.Join(", ", CampaignManagementService.GetAdvertisers((string) Session["ticket"]).Select(kv => kv.Key.ToString()).ToArray())

From this method I get ID's but I don't know how to use those in another method for example:

String.Join(", ", CampaignManagementService.GetCampaigns((string)Session["ticket"] , (int) 16156).Select(x => x.Key + " - " + x.Value));

In this method I need ID | (int) 16156 | but this is only static ID value I want to put ID from first method

Can anyone help me ?

4

3 に答える 3

2

多分そのようなもの:

CampaignManagementService.GetAdvertisers((string) Session["ticket"])
                         .SelectMany(kv => CampaignManagementService.GetCampaigns((string)Session["ticket"] , kv.Key))
                         .Select(x => x.Key + " - " + x.Value)
于 2013-06-06T12:40:34.860 に答える
1

私は、精神的なデバッグ能力を使用して、いくつかのことを想定します。

  1. CampaignManagementService.GetAdvertisersa を受け取り、 astringを返しますDictionary<int, Advertiser>

  2. ディクショナリのキーは、返された広告主の ID です。

  3. その上でstring.Join(...)を実行すると、クライアントに簡単に転送してそこに表示できるカンマ区切りのリストが得られます

  4. ディクショナリから取得したすべての広告主のすべてのキャンペーンを何らかの方法で取得する必要があります。

  5. 各広告主のキャンペーンは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.JoinIEnumerable<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)
于 2013-06-06T12:52:19.593 に答える
1

出力をユーザーに表示するときは、出力を読み取り可能な形式に変換する必要があります。必要になるまでデータを変換しないことをお勧めします。

public List<Advertiser> GetAdvertisers()
{
    return CampaignManagementService.GetAdvertisers((string) Session["ticket"]).ToList();
}

public List<Campaign> GetCampaigns(IEnumerable<Advertiser> advertisers)
{
    return advertisers.Select(a => CampaignManagementService.GetCampaigns((string)Session["ticket"],
                                   Convert.ToInt32(a.Key))).ToList();
}
于 2013-06-06T12:44:11.220 に答える