@justcrone
Верстальщик

Как проверить массив на наличие совпадений?

Пытаюсь с помощью vkNet сделать следующее - удалять одинаковые комментарии к записям, т.е. если комментарии в посте повторяются, то мы их удаляем, пока только научился удалять комментарии к определенным постам и по определенному значению
private void button3_Click(object sender, EventArgs e)
        {
            	//Получаю комментарии в посте
                var getComments = vk.Wall.GetComments(new WallGetCommentsParams
                {
                    OwnerId = -95547792,
                    PostId = 919,
                    Count = 50
 
                });
               //Перебираю комментарии в посте
			   //Не врубаюсь как сравнить комменты и удалить если они одинаковые *facepalm*
                foreach (var comments in getComments)
                {
                    if (comments.Text == "3")
                    {	
						//Удаляю комментарий по id, если его текст равен "3"
                        var deleteComment = vk.Wall.DeleteComment(-95547792, comments.Id);
                    }
                }

          }

Т.е. если там есть комментарий со значением "3", то мы его удаляем, а как сделать чтоб он сравнивал комментарии и удалял одинаковые?
  • Вопрос задан
  • 340 просмотров
Решения вопроса 1
@kttotto
пофиг на чем писать
Накидал пример, получите все айдишники повторных комментариев, которые надо удалить.
static void Main(string[] args)
{
    var comments = new[]
    {
         new Comment { Id = 1, Text = "1" },
         new Comment { Id = 2, Text = "2" },
         new Comment { Id = 3, Text = "3" },
         new Comment { Id = 4, Text = "1" },
         new Comment { Id = 5, Text = "2" },
         new Comment { Id = 6, Text = "2" },
         new Comment { Id = 7, Text = "1" },
         new Comment { Id = 8, Text = "4" },
         new Comment { Id = 9, Text = "5" },
         new Comment { Id = 10, Text = "2" },
    };

    var result = comments
				.GroupBy(x => x.Text)
				.SelectMany(x => x.Select(y => y.Id).Skip(1))
				.ToArray();

    foreach (var id in result)
    {
         Console.WriteLine($"{id}");
    }
    Console.ReadKey();
}

class Comment
{
     public int Id { get; set; }
     public string Text { get; set; }
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
TheTalion
@TheTalion
private void button3_Click(object sender, EventArgs e)
        {
            	//Получаю комментарии в посте
                var getComments = vk.Wall.GetComments(new WallGetCommentsParams
                {
                    OwnerId = -95547792,
                    PostId = 919,
                    Count = 50
 
                });
               //Перебираю комментарии в посте
         //Не врубаюсь как сравнить комменты и удалить если они одинаковые *facepalm*

                foreach (var comments in getComments)
                {
                    if (comments.Text == "3" || Array.FindAll( getComments, c => c == comments).Lenght > 1)//могут быть ошибки, писал без редактора
                    {	
            //Удаляю комментарий по id, если его текст равен "3" или есть таких комментов больше одного
                        var deleteComment = vk.Wall.DeleteComment(-95547792, comments.Id);
                    }
                }

          }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы