【问题标题】:Joining strings in a JArray with LINQ使用 LINQ 连接 JArray 中的字符串
【发布时间】:2014-10-29 17:40:10
【问题描述】:

我有一个如下所示的 JArray:

我正在使用下面的代码来获得预期的结果: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();
}

【问题讨论】:

  • 为什么要删除最后一个两个字符而不是最后一个字符?请注意您的输出如何以 808433 而不是 8084337 结尾...
  • @Jon Skeet 你是对的。它应该是最后一个字符,而不是最后两个。

标签: c# linq json.net


【解决方案1】:

使用string.JoinSelect 将JArray 元素投影到字符串:

public static string GiveClientCampaignParam(JArray myArray)
{
    return string.Join(",", myArray.Select(j => $"{j["ClientId"]}:{["CampaignId"]}"));
}

使用string.Join 也意味着您不需要从末尾减去额外的逗号。

【讨论】:

  • 那里不用打ToString()...会由string.Format自动完成。
【解决方案2】:

这应该可行。

return string.Join(",", myArray.Select(a => a["ClientId"] + ":" + a["CampaignId"]));

【讨论】:

    猜你喜欢
    • 2010-09-12
    • 1970-01-01
    • 2010-10-08
    • 1970-01-01
    • 2021-06-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多