заменить слово из строки в списке C# LINQ - PullRequest
0 голосов
/ 30 мая 2020

У меня есть список, в котором я получаю URL-адрес, например:

Please check this for URL format

Я хочу заменить «URL //» фактическим URL-адресом, как любой URL. почему я делаю это, потому что URL-адрес будет зависеть от среды, к которой осуществляется доступ к веб-сайту. как и в случае с этапом, он будет использовать URL-адрес этапа и так далее.

Я пробовал:

ProductReviews.Items.ToList().ForEach(x => x.AvatarUrl.Replace("URL", serverImageUrl));

, но, насколько я понимаю, требуется полное строковое значение как «URL». Пожалуйста, помогите мне

Ответы [ 2 ]

3 голосов
/ 30 мая 2020

Вы не используете LINQ для внесения изменений в свой сбор данных. Если вы хотите изменить коллекцию, используйте обычный foreach l oop

foreach(var pr in ProductReviews)
  pr.AvatarUrl = pr.AvatarUrl.Replace("URL", serverImageUrl);

Помните: «LINQ предназначен для запросов, а не для изменения»

Если вы хотите заменить URL-адрес с помощью LINQ вы делаете это как часть запроса, который возвращает перечисление новых объектов, представляющих ваши замены:

ProductReviews.Select(pr => new { Review = pr, ReplacedUrl = pr.AvatarUrl.Replace("URL", serverImageUrl) } );

Это даст вам список новых объектов, имеющих исходный и замененный URL. Проще включить оригинал, предполагая, что вам нужны все поля, как одно поле, но вы также можете перечислить то, что хотите:

ProductReviews.Select(pr => new {
   pr.Id, 
   pr.CustomerId,
   AvatarUrl = pr.AvatarUrl.Replace("URL", serverImageUrl)
} );

Или вы можете использовать автомаппер для сопоставления ваших объектов db с объекты на стороне клиента и избавьтесь от этого трудоемкого набора текста

0 голосов
/ 30 мая 2020
ProductReviews.Items.ToList().ForEach(x => x.AvatarUrl = x.AvatarUrl.Replace("URL", serverImageUrl));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...