2016-09-12 2 views
1

Ich habe eine Sammlung AvailableNations genannt, in dieser habe ich eine Eigenschaft namens IsSelected, ich nach dem ersten Punkt überprüfen muß, wenn alle Einzelteile haben den IsSelected Wert auf true gefassten, tat ich dies:Wie überprüft man, ob Artikel in der Sammlung einen bestimmten Wert enthalten?

var allChecked = lsVm.AvailableNations.Skip(1).Where(c => c.IsChecked == true).Any(); 

aber das wird in jedem Fall true zurückgeben, stattdessen sollte false zurückgeben, weil ich fast ein Element mit einer Eigenschaft auf false gesetzt habe.

Vielleicht ist .Any() das Problem?

Antwort

2

Sie müssen All() hier verwenden, wird sie prüfen, ob alle Elemente werden geprüft:

var allChecked = lsVm.AvailableNations.Skip(1).All(c => c.IsChecked); 
+0

Oh wusste das nicht, danke! – AgainMe

+2

und Sie brauchen nicht das '' == true'' in Ihrem wo, es ist wie das Überprüfen '' true == true'' –

+0

@EhsanSajjad: wenn jemand '== true' oder' == false' anhängen muss es zeigt oft an, dass er Variablen umbenennen sollte. In diesem Fall ist es klar, dass es ein 'bool' ist und' All (c => c.IsChecked) 'ist sehr lesbar. –

2

Any Methode (in diesem Zusammenhang) gibt true zurück, wenn jede der AvailableNotations geprüft. Was Sie brauchen, ist All Erweiterungsmethode.

var allChecked = lsVm.AvailableNations 
        .Skip(1)    // Skip first element 
        .All(x=>x.IsChecked); // returns true when `IsChecked` is true for all, else false. 
Verwandte Themen