2016-07-28 10 views
1

Ich habe eine Liste mit n-Einträgen. List<MyClass> resultundefinierte Anzahl von Or-Operation auf Liste

Und ich habe noch eine Liste mit n-Filteroptionen List<string> filters

Was ich will, ist der Ergebnisliste durch die andere Liste gefiltert, um zurückzukehren.

Für eine UND-Operation seines wie diese einfach:

foreach (var filter in filters) 
{ 
    results = results.Where(x => x.Result == filter); 
} 

Aber wie für eine ODER-Verknüpfung codieren?

Antwort

2

Sie Where in Kombination mit Any in diesem Fall verwenden können:

results = results.Where(x => filters.Any(f => f == x.Result)); 

https://msdn.microsoft.com/library/bb534972(v=vs.110).aspx

Andere Möglichkeiten:

//Contains, see DAXaholic's post 
results = results.Where(x => filters.Contains(x.Result)); 

https://msdn.microsoft.com/library/bhkz42b3(v=vs.110).aspx

//List Extension method 'Exists' 
results = results.Where(x => filters.Exists(f => f == x.Result)); 

https://msdn.microsoft.com/library/bfed8bca(v=vs.110).aspx

2

So etwas sollte für Sie arbeiten

results.Where(x => filters.Contains(x.Result)) 
Verwandte Themen