2017-01-25 1 views
0

Мой код:Проверьте массив содержит строку в агрегатной функции в C#

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

Я хотел бы проверить, если URL-адрес параметр содержит строку «Jquery».

+0

Что вы хотите, если найдете такой Url? – Sunshine

ответ

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

EDIT: Пер комментарий ниже, лучше ответ будет предварительно отфильтровать список:

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

Быстрое предупреждение с этим решением, - это решает проблему, как писал, но вы «добавление результата в« allScripts », но также включение его в качестве семени в Aggregate, поэтому в этом случае вы, вероятно, дублируете свои оригинальные« allScripts ». Решения должны не предоставлять семя или использовать только «=» вместо «+ =» при назначении.

+1

Если это поведение, которое он ищет, было бы лучше отфильтровать список перед агрегатом, используя .Where. – Sunshine

+0

Вы правы - я отредактирую сообщение, чтобы отразить ваше понимание. – chrispy

0

tnx много! , который отлично работал, проверьте последнюю скобку.

allScripts += externalJs.Where(js => !js.Url.Contains("jquery-ui")).Aggregate(allScripts, (current, js) => current + String.Format("<script src=\"{0}\"></script>", js.Url)); 
Смежные вопросы