2016-07-08 17 views
-2

Ich habe eine Liste Vehicles mit einigen String-Eigenschaften. Ich habe eine andere Liste filterList, wo der Benutzer auswählen, welche Eigenschaften er will. In der filterValues sollten die Werte der Eigenschaften, die der Benutzer ausgewählt hat. Wie soll ich das machen?Linq Wählen Sie aus einer Liste eine Eigenschaft

Bisher habe ich denke an so etwas wie dieses:

var filterValues = =new List<string>(); 
foreach(var filter in filterList) 
{ 
    filterValues = vehicles.Select(x=>x. + filter).ToList(); 
} 

Aber danach alle Elemente von filterValues enthält x.filter. Danke!

+0

Ist 'FilterValues' soll sein würde? Bitte geben Sie die Definition des Elementtyps "Fahrzeuge" an. – Codor

+0

Verwenden Sie SelectMany(), wenn Sie in verschachtelte Listen eintauchen möchten, die Eigenschaften der Klasse sind, die Sie abfragen. https://msdn.microsoft.com/en-us/library/bb534336(v=vs.100).aspx – Fredrik

+0

FilterValues ​​soll alle Werte der Eigenschaft haben. – RobertRPM

Antwort

1

Ich nehme an, dies Ihre Fahrzeugklasse mit Eigenschaften eine Liste sein, um ausgewählt werden

public class Vehicle 
{ 
    public string Foo {set; get;} 
    public string Bar {set; get;} 
} 


var filterValues = new List<string>(); 
vehicles.Select(x => filterValues.Any(f => f.Contains(x.Foo) || f.Contains(x.Bar)) 
        .ToList(); 
+0

Die Eigenschaft, die in den filterValues ​​enthalten sein muss, wird von einem Benutzer eingeführt. – RobertRPM

+0

@RobertRPM das wäre kein Problem und funktioniert mit dieser Lösung, fügen Sie einfach zu filterValues ​​nach seiner Deklaration – Kahbazi

+0

'filterValues.Any (f => f.Contains (x.Foo) || f.Contains (x.Bar))' – Sherlock

Verwandte Themen