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

通过这种方法,我得到了 ID,但我不知道如何在另一种方法中使用它们,例如:

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

在这种方法中,我需要 ID | (int) 16156| 但这只是我想从第一种方法中输入 ID 的静态 ID 值

谁能帮我 ?

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

当您将输出显示给用户时,您应该将输出转换为可读格式。我建议在需要之前避免转换您的数据。

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 回答
1

我将使用我的心理调试能力假设几件事:

  1. CampaignManagementService.GetAdvertisers接受 astring并返回 aDictionary<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())

并将分别为您提供一个IEnumerable<int>和 a IEnumerable<string>,其中将包含广告客户 ID

var csvAdvertisers = string.Join(", ", strAdvertiserIDs)

将为您提供以逗号分隔的原始 ID 列表(.ToArray()不需要,因为string.Join有一个接受 的重载IEnumerable<string>)。
接下来,要获取所有广告,您可以使用SelectMany方法,如下所示:

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 回答