在JArray加入琴弦与LINQ
问题描述:
我有一个JArray,看起来像这样:在JArray加入琴弦与LINQ
我使用下面的代码,以获得预期的结果:6035940:8061090,6035940:8084337
。
我可以用Linq清理吗?怎么样?
public static string GiveClientCampaignParam(JArray myArray)
{
StringBuilder sb = new StringBuilder();
foreach (var arrayItem in myArray)
{
string clientId = arrayItem["ClientId"].ToString();
string campaignId = arrayItem["CampaignId"].ToString();
sb.Append(clientId + ":" + campaignId + ",");
}
sb.Remove(sb.Length - 1, 1);
return sb.ToString();
}
答
使用string.Join和Select到JArray元素投射到一个字符串:
public static string GiveClientCampaignParam(JArray myArray)
{
return string.Join(",", myArray.Select(j =>
string.Format("{0}:{1}", j["ClientId"], j["CampaignId"]);
}
使用string.Join也意味着你不需要从最终减去额外的逗号。
+1
没有必要在那里调用'ToString()',它将由'string.Format'自动完成。 – 2014-10-29 17:50:40
答
这应该有效。
return string.Join(",", myArray.Select(a => a["ClientId"] + ":" + a["CampaignId"]));
为什么要删除最后的*两个*字符而不是最后一个字符?注意你的输出如何以808433而不是8084337结束... – 2014-10-29 17:44:20
@Jon Skeet你是对的。它应该是最后一个chara,而不是最后两个chara。 – Kyle 2014-10-29 17:50:07