J'ai besoin de développer une application où deux fichiers CSV sont comparés. Le premier fichier contient une liste d'adresses e-mail. La deuxième liste contient également des adresses e-mail, mais inclut des informations sur le nom et l'adresse. La première liste contient les adresses e-mail qui doivent être supprimées de la deuxième liste. J'ai le lecteur Fast CSV du site CodeProject qui fonctionne plutôt bien. L'application n'aura pas accès à un serveur de base de données. Un nouveau fichier sera généré avec des données considérées comme vérifiées. Ce qui signifie, il ne contiendra aucune des informations du premier fichier.En comparant 2 fichiers CSV dans un conseil C#?
Répondre
Si vous lisez les deux listes dans des collections, vous pouvez utiliser Linq pour déterminer le sous-ensemble d'adresses.
Voici un exemple rapide de classe I fouetté pour vous.
using System;
using System.Linq;
using System.Collections.Generic;
public class RemoveExample
{
public List<Item> RemoveAddresses(List<Item> sourceList, List<string> emailAddressesToRemove)
{
List<Item> newList = (from s in sourceList
where !emailAddressesToRemove.Contains(s.Email)
select s).ToList();
return newList;
}
public class Item
{
public string Email { get; set; }
public string Name { get; set; }
public string Address { get; set; }
}
}
Pour l'utiliser, lisez votre csv dans une liste, puis le transmettre, et votre liste d'adresses à éliminer, une liste dans la méthode.
Exactement ce que je cherchais. Aussi, si quelqu'un est intéressé, j'ai trouvé cette bibliothèque LINQ to CSV cool: http://www.codeproject.com/KB/linq/LINQtoCSV.aspx – DDiVita
Vous ne savez pas quel type de conseil vous avez besoin, il semble simple.
Heres un croquis de l'algorithme rapide:
boucle- par courrier électronique de la première csv
- mettre chaque email dans un HashSet <>
- exécuter votre suppression
- mettre chaque sortie email dans le même HashSet <>
- s'il y a un DuplicateKeyException, vous avez manqué une dans la suppression
- si emailList2.Count - emailList1.Count = outputList.Count, vous supprimé trop
Ceci est relativement simple, En supposant que les listes ne sont pas très volumineuses ou que l'utilisation de la mémoire ne soit pas un problème trop important: lisez les deux ensembles d'adresses de courrier électronique dans deux instances HashSet<string>
distinctes. Ensuite, vous pouvez utiliser HashSet<T>.ExceptsWith
pour trouver les différences entre les deux ensembles. Par exemple:
HashSet<string> setA = ...;
HashSet<string> setB = ...;
setA.ExceptWith(setB); // Remove all strings in setB from setA
// Print all strings that were in setA, but not setB
foreach(var s in setA)
System.Console.WriteLine(s);
BTW, le devrait être O ci-dessus (n * log (n)) complexité, par rapport à l'aide de la réponse Linq, qui serait O (n^2) sur des données non indexées.
- 1. comparant 2 fichiers en utilisant java
- 2. Comment joindre 2 fichiers csv en Java
- 3. En comparant une chaîne avec un caractère en C++
- 4. trouver la différence dans 2 fichiers CSV. php
- 5. MDB 2 CSV lot
- 6. En comparant une chaîne à un tableau dans l'objectif-C
- 7. C# Generics, comparant 2 chaînes Echoue sauf si spécifié explicitement
- 8. comparant 2 tableaux, retirez les éléments avec un même champ
- 9. C# Scripting - conseil requis
- 10. Conseil en architecture/modèle?
- 11. C# XML Merging (2+ fichiers)
- 12. En comparant un seul à un double dans VB.Net
- 13. Importer des fichiers .csv dans SQlite via l'objectif C
- 14. En comparant deux arraylist en application c windows #
- 15. En comparant deux listes <MyClass> en C#
- 16. Importation de fichiers CSV en utilisant groovy
- 17. Traverser plusieurs fichiers CSV dans SQL
- 18. Importer des fichiers CSV
- 19. Conversion de documents MS en fichiers CSV
- 20. comment fusionner 200 fichiers CSV en Python
- 21. Conseil en conception d'application
- 22. Comment fusionner des fichiers CSV en Java
- 23. Conseil en architecture pour un site web
- 24. Trier CSV en ne comparant que le premier élément de chaque ligne
- 25. En comparant deux champs dans django
- 26. analyse syntaxique des fichiers CSV arrière
- 27. En comparant deux lambdas/Procs en Ruby
- 28. En comparant l'entrée de C avec tableau des valeurs
- 29. Importer des fichiers CSV multilignes dans Excel internationalement
- 30. En comparant 2 tables, et d'obtenir des lignes où le compte est même
Lorsque vous supprimez des adresses e-mail du second fichier, le reste des données de la ligne doit-il rester ou supprimez-vous la ligne entière? – AllenG