【问题标题】:Check if array contains string in aggregate function in C#检查数组是否在C#的聚合函数中包含字符串
【发布时间】:2017-01-25 18:28:02
【问题描述】:

我的代码:

allScripts += externalJs.Aggregate(allScripts, (current, js) 
            => current + String.Format("<script src=\"{0}\"></script>", js.Url));

我想检查参数Url是否包含字符串“jquery”。

【问题讨论】:

  • 如果找到这样的Url你想做什么?

标签: c# aggregate contains


【解决方案1】:
allScripts += externalJs.Aggregate(allScripts, (current, js) =>js.Url.Contains("jquery") ? current + String.Format("<script src=\"{0}\"></script>", js.Url) : current);

编辑:根据下面的评论,更好的答案是预先过滤列表:

allScripts += externalJs.Where(js => js.Url.Contains("jquery")).Aggregate(allScripts, (current, js) => current + String.Format("<script src=\"{0}\"></script>", js.Url);

此解决方案的快速警告 - 它解决了发布的问题,但您将结果添加到“allScripts”,但也将其作为种子包含在聚合中,因此您可能会复制原始的“allScripts” “ 在这种情况下。解决方案是不提供种子,或者只在作业中使用“=”而不是“+=”。

【讨论】:

  • 如果这是他正在寻找的行为,最好在聚合之前使用 .Where 过滤列表。
  • 你是对的——我会编辑帖子以反映你的见解。
【解决方案2】:

tnx 很多! 效果很好,请检查最后一个括号。

allScripts += externalJs.Where(js => !js.Url.Contains("jquery-ui")).Aggregate(allScripts, (current, js) => current + String.Format("<script src=\"{0}\"></script>", js.Url));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-16
    • 2012-03-27
    • 1970-01-01
    • 2015-02-07
    • 2022-06-30
    • 2021-12-03
    • 2021-06-10
    • 1970-01-01
    相关资源
    最近更新 更多