LINQ Найти строковые дубликаты в списке - PullRequest
0 голосов
/ 29 ноября 2018

Я пытаюсь предотвратить дублирование имен в списке, но пока безуспешно.

У меня есть список записей, и у каждой записи есть имя ( например, записи:" file"," file1"," someFile"," anotherFile").Всякий раз, когда я создаю новую запись, я добавляю ее в Список записей.Но я не хочу добавлять новую запись с тем же именем.

У меня есть файл, который я только что создал ( например имя:" file ").
Как мне найти все дубликаты имен и сделать в конце примерно так: " file2 "?
Извините, если вопрос немного расплывчат.

Я пытался использовать LINQ и Regex , но я немного новичок в этих вещах, поэтому неуверен, что я делаю ..

1 Ответ

0 голосов
/ 04 декабря 2018

Согласно тому, что вы отправили в вопрос, простая программа с условиями if-else может решить вашу проблему:

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;


public class Program
{
    public static void Main()
    {
        string[] entries = new []{"file", "file1", "someFile", "anotherFile", "file", "someFile", "file"};
        List<string> curatedEntries = new List<string>();

        foreach(string e in entries)
        {
            int index = 0;
            string entry = e;
            Check:
            if(CheckExists(curatedEntries, entry)){
                index++;
                entry = e + index;
                goto Check;
            }

            curatedEntries.Add(entry);
        }
        curatedEntries.ForEach(x=>Console.WriteLine(x));
    }

    public static bool CheckExists(List<string> lst,string e)
    {
        return lst.Any(x=>x.Equals(e));
    }
}

Вот скрипка: https://dotnetfiddle.net/fdSClH

...