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值
任何人都可以帮助我吗?
答案 0 :(得分:2)
也许是这样的:
CampaignManagementService.GetAdvertisers((string) Session["ticket"])
.SelectMany(kv => CampaignManagementService.GetCampaigns((string)Session["ticket"] , kv.Key))
.Select(x => x.Key + " - " + x.Value)
答案 1 :(得分: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();
}
答案 2 :(得分:1)
我将使用我的心理调试能力假设几件事情:
CampaignManagementService.GetAdvertisers
需要string
并返回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()
,因为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)