#c# #split #duplicates #line #distinct
#c# #разделить #дубликаты #строка #distinct
Вопрос:
-из списка примером является 9120038560640, который встречается дважды или может быть больше.
-строки, хранящиеся в списке<.string> items = File .Прочитайте все строки (путь к файлу).ToList();
-каждая строка разделяется точкой с запятой.
-второй индекс или [1] должен сравниваться со всеми строками и удаляться с найденным совпадением.
363193;9120038560640;7,11;9,99 <—- необходимо удалить
363195;9120038560641;9,81;14,99
363194;9120038560640;9,81;14,99 <— необходимо удалить
363196;9120038560642;9,81;14,99
363197;9120038560643;9,81;14,99
….
..
.
кстати. мой файл содержит 25 000 элементов.
Спасибо
Комментарии:
1. Это то, с чем у вас возникли проблемы, или вы просто пытаетесь заставить нас сделать это за вас?
2. CSV в DataTable, отличающийся по столбцу, сохраните его снова в файле, если это необходимо. Также ваш вопрос слишком широкий!
3. привет @Abion47 для меня это немного сложная проблема, поэтому я прошу, чтобы кто-нибудь мог мне помочь.
4. привет @mybirthname правильно ли это использовать Excel? я уже так делал. но мне нужно это автоматизировать.
Ответ №1:
хорошо, я получил ответ, и это работает
элементы = элементы.Где(x => x.Split(‘;’)[ColumnIndex] != «»).OrderBy(x => x.Split(‘;’)[ColumnIndex]).ToList(); Список<.string> _items = элементы.ConvertAll(z => z); // Я делаю независимую копию
string[] itemsArr = items.ToArray();
int countA = 0;
foreach (string itemArr in itemsArr)
{
List<int> groupDuplicates = new List<int>();
for (int a = countA; a < itemsArr.Count(); a )
{
if (itemArr != itemsArr[a])
{
if (itemArr.Split(';')[columnIndex] == itemsArr[a].Split(';')[columnIndex]) //if matched then add
{
groupDuplicates.Add(a); // listing index to be remove
}
else
break; //no way to go through the bottom of the list and also to make the performance faster
}
countA ;
}
if (groupDuplicates.Count() != 0)
{
groupDuplicates.Add(groupDuplicates.First() - 1); //I add here the first item in duplicates
foreach (int m in groupDuplicates)
{
_items.Remove(items.ElementAt(m)); //remove by item not by index
}
}
}