2017-11-08 1 views
0

ich zwei Liste habe ich die Werte der Liste möge 1, wenn es jeden Wert aus der Liste enthält 2.überprüfen, ob ein Array Wert eines anderen Array enthält

List<string> list1 = new List<string>(); 
list1.Add("Sunday is far away"); 
list1.Add("Today is Monday"); 
list1.Add("Tuesday is too near"); 

List<string> list2 = new List<string>(); 
list2.Add("Sunday"); 
list2.Add("Monday"); 
list2.Add("Tuesday"); 

var result1 = list1.Where(x => list2.Any(y => y.Contains(x))).ToList(); //no results 
var result2 = list2.Where(x => list1.Any(y => y.Contains(x))).ToList(); //give values of list2. But I need values of list1 

Update:

I brauche Werte von list1 im Ergebnis, wie kann ich das bekommen?

+1

Also, was ist das Problem hier? – BugFinder

+1

In der ersten Annäherung hast du x und y durcheinander gebracht. Sollte 'Any (y => x.Contains (y))' sein – Evk

Antwort

0

Einfache Sache, die Sie verpasst haben, werfen Sie einen Blick in die Sammlung, alle Elemente in der ersten Liste sind größer als die der zweiten, so dass die enthält false zurückgibt. So haben Sie für die zweite Artikel einzuchecken ersten wie folgt aus:

Hier ist Ihre modified code with result:

var result1 = list1.Where(x => list2.Any(y => x.Contains(y))).ToList(); 
var result2 = list2.Where(x => list1.Any(y => y.Contains(x))).ToList(); 
0

einfach können Sie. Wenn List1 einen Wert von List2 enthält, dann ist result = List1. Sonst null;

var result = list2.Any(l2 => list1.Contains(l2))==true?list1:null; 
Verwandte Themen