web-dev-qa-db-fra.com

Comparez la différence entre deux listes <chaîne>

J'essaie de vérifier la différence entre deux List<string> dans c#.

Exemple:

List<string> FirstList = new List<string>();
List<string> SecondList = new List<string>();

FirstList est rempli avec les valeurs suivantes:

FirstList.Add("COM1");
FirstList.Add("COM2");

SecondList est rempli avec les valeurs suivantes:

SecondList.Add("COM1");
SecondList.Add("COM2");
SecondList.Add("COM3");

Maintenant, je veux vérifier si certaines valeurs du SecondList sont égales aux valeurs du FirstList.

S'il existe des valeurs égales comme: COM1 et COM2, qui sont dans les deux listes, puis filtrez-les à partir de la liste et ajoutez les valeurs restantes à une autre liste.

Donc, si je crée un nouveau ThirdList, il sera rempli avec "COM3" uniquement, car les autres valeurs sont des doublons.

Comment puis-je créer un tel chèque?

15
Max

Essayez d'utiliser Sauf la méthode d'extension LINQ, qui prend uniquement les éléments de la première liste, qui ne sont pas présents dans la seconde. Un exemple est donné ci-dessous:

List<string> ThirdList =  SecondList.Except(FirstList).ToList();

Vous pouvez imprimer le résultat à l'aide du code suivant:

Console.WriteLine(string.Join(Environment.NewLine, ThirdList));

Ou

Debug.WriteLine(string.Join(Environment.NewLine, ThirdList));

Remarque: N'oubliez pas d'inclure: using System.Diagnostics;

imprime:

COM3
39
Ilya Ivanov

Vous pouvez utiliser Enumerable.Intersect :

var inBoth = FirstList.Intersect(SecondList);

ou pour détecter des chaînes qui ne figurent que dans l'une des deux listes, Enumerable.Except :

var inFirstOnly = FirstList.Except(SecondList);
var inSecondOnly = SecondList.Except(FirstList);

Pour obtenir votre ThirdList:

List<string> ThirdList = inSecondOnly.ToList();
16
Tim Schmelter

Que pour ce roi de reuqirement, vous pouvez utiliser la fonction Except.

List<string> newlist =  List1.Except(List2).ToList();

ou vous pouvez le faire, donc celui ci-dessous crée une nouvelle liste trois qui contient des éléments qui ne sont pas communs dans list1 et list2

var common = List1.Intersect(List2);

var list3 = List1.Except(common ).ToList();
list3.AddRange(List2.Except(common ).ToList());

celui-ci est une aide complète lorsque list1 et list2 ont un élément différent comme

List<string> list1= new List<string>();
List<string> list2 = new List<string>();

La FirstList est remplie avec les valeurs suivantes:

list1.Add("COM1");
list1.Add("COM2");
list1.Add("COM4");

Le SecondList est rempli avec les valeurs suivantes:

list2 .Add("COM1");
list2 .Add("COM2");
list2 .Add("COM3");

en utilisant le code ci-dessus list3 contains COM4 and COM3.

5
Pranay Rana