2016-08-29 5 views
2

Ich möchte eine Liste der Zeichenfolge in zwei Listen lstJobs und lstPraudits erhalten. Ich möchte PlanId erhalten, was in beiden Listen üblich ist.Vergleichen von zwei Listen mit Lambda-Ausdruck

Hier ist mein Code-

List<string> result=reviewModel.lstJobs.Select(x=>x.planId.Contains(reviewModel.lstPraudits.Slect(y=>y.PlanId).toList())); 

Was ich hier falsch mache. Der Code gibt eine Fehlermeldung aus.

+1

Eine Quelle von Fehlermeldungen können falsch geschriebene Bezeichner wie 'Select' und' toList' sein, es sei denn, Sie haben diese Methoden selbst definiert. –

+0

Sie vermissen Schreibweise von Wählen – Developer

+0

Was ist der Typ von PlanId? Ist es eine Sammlung? Ich sehe auch die Schreibweise von Select ist falsch in der inneren Abfrage. –

Antwort

3

Verwendung Enumerable.Intersect:

List<string> result = reviewModel.lstJobs.Select(x=> x.PlanId) 
    .Intersect(reviewModel.lstPraudits.Select(y=> y.PlanId)) 
    .ToList(); 

Was ich hier falsch

Ihr Ansatz tue, ist falsch, weil x.planId.Contains Strings suchen und Sie erhalten eine Liste der Methode sind vorbei. Es ist sowieso der falsche Ansatz, weil Sie Teilstrings nicht vergleichen wollen.

+0

Danke, es war der richtige Weg. –

0

Die Verwendung von Intersect ist ein netter Ansatz. Aber wenn Sie sagen, was Sie falsch machen, würde ich sagen, dass Sie auf die falsche Sache iterieren. Die Abfrage nach Ihrem appproach sollte sein:

List<string> result = reviewModel.lstJobs.Select(x => reviewModel.lstPraudits.Select(y=>y.PlanId).Contains(x.planId)) 
0

Verwenden Where zwischen beiden Listen zu vergleichen.