【发布时间】:2014-04-11 16:09:36
【问题描述】:
我有一段代码可以运行,但我认为有点不雅。当只有一项时,advertiserList 是 null。 C# 不能把它当作一个包含一个项目的循环吗?如何清理此代码?谢谢。
if{}else{} 的内部部分都做同样的事情。我只是想获取广告客户信息。
// build the advertiser loop
var advertiserList = campaignAdvertiserContainer["Advertiser"] as ArrayList;
if (advertiserList != null) // if multiple advertisers exist per campaign
{
foreach (Dictionary<string, object> advertiser in advertiserList)
{
Dictionary<string, object> multipleCampaignAdvertiserLookup = new Dictionary<string, object>();
multipleCampaignAdvertiserLookup.Add("CampaignId", campaign["id"].ToString());
multipleCampaignAdvertiserLookup.Add("AdvertiserId", advertiser["id"].ToString());
multipleCampaignAdvertiserLookup.Add("MediaCode", advertiser["MediaCode"].ToString());
multipleCampaignAdvertiserLookup.Add("BusinessKey", advertiser["BusinessKey"].ToString());
multipleCampaignAdvertiserLookup.Add("CreatedBy", System.Reflection.Assembly.GetExecutingAssembly().FullName.ToString());
multipleCampaignAdvertiserLookup.Add("CreatedDt", DateTime.Now.ToString());
campaignAdvertiserLookupArray.Add(multipleCampaignAdvertiserLookup);
}
}
// there's only one advertiser, no need to loop
else
{
Dictionary<string, object> singleAdvertiser = (Dictionary<string, object>)campaignAdvertiserContainer["Advertiser"];
Dictionary<string, object> singleCampaignAdvertiserLookup = new Dictionary<string, object>();
singleCampaignAdvertiserLookup.Add("CampaignId", campaign["id"].ToString());
singleCampaignAdvertiserLookup.Add("AdvertiserId", singleAdvertiser["id"].ToString());
singleCampaignAdvertiserLookup.Add("MediaCode", singleAdvertiser["MediaCode"].ToString());
singleCampaignAdvertiserLookup.Add("BusinessKey", singleAdvertiser["BusinessKey"].ToString());
singleCampaignAdvertiserLookup.Add("CreatedBy", System.Reflection.Assembly.GetExecutingAssembly().FullName.ToString());
singleCampaignAdvertiserLookup.Add("CreatedDt", DateTime.Now.ToString());
campaignAdvertiserLookupArray.Add(singleCampaignAdvertiserLookup);
}
【问题讨论】:
-
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。
-
这里有点可疑。一开始您要求将您的campaignAdvertiserContainer["Advertiser"] 视为一个ArrayList,如果结果为null,则您的else 条件将其转换为(Dictionary
)。那个变量campaignAdvertiserContainer["Advertiser"]的真正内容是什么? -
@Steve 他们都是
Dictionary<string, object>。我发现 ArrayList 是唯一可以让我使用foreach循环的类型。 -
仍然缺少一些东西。 CampaignAdvertiserContainer 的类型是什么?你能显示你初始化它并添加值的代码吗?
-
尝试将campaignAdvertiserContainer["Advertiser"] 设为List
>