Entwickler-Ecke

Basistechnologien - Property vergleich aus zwei unterschiedliche Listen


daeve - Mo 16.01.12 15:32
Titel: Property vergleich aus zwei unterschiedliche Listen
Hallo zusammen


C#-Quelltext
1:
2:
comboBoxAntrieb.DataContext = zubehoerViewModel.antriebList;
comboBoxAntrieb.SelectedItem = zubehoerViewModel.antriebList.Select(x => x.ZubehoerID.CompareTo(selectedCar.Zubehoer.Select(y => y.ZubehoerID)));


mein Problem ist das dieser Code nicht funktioniert...
ich habe zwei Listen "antriebList" und "Zubehoer"
Die antriebList ist der Datacontext des CB, das binding ist im xaml dort wird auch der Displaymember definiert. (soweit alles gut)

nun möchte ich gerne das bei der CB das selectierteItem aus der liste Zubehoer ausgewählt wird.

hoffe ihr versteht das ;)


Ralf Jansen - Mo 16.01.12 15:55

Select liefert dir eine Liste von Items aber SelectedItem ist natürlich genau 1 Wert. Du solltest also eher mit First bzw. FirstOrDefault anstatt mit Select arbeiten. Was du mit dem Ausdruck in dem Select selbst vorhast ist mir völlig schleierhaft. Wie willst du damit (wenn er den funktionieren würde) genau einen Wert auswählen?

Besteht AntriebList aus Zubehoer(en) oder ist AntriebList (bzw. ein Antrieb darin) selbst ein Zubehoer oder wie ist da der Zusammenhang?


daeve - Mo 16.01.12 17:56

user profile iconRalf Jansen hat folgendes geschrieben Zum zitierten Posting springen:
Select liefert dir eine Liste von Items aber SelectedItem ist natürlich genau 1 Wert. Du solltest also eher mit First bzw. FirstOrDefault anstatt mit Select arbeiten. Was du mit dem Ausdruck in dem Select selbst vorhast ist mir völlig schleierhaft. Wie willst du damit (wenn er den funktionieren würde) genau einen Wert auswählen?

Besteht AntriebList aus Zubehoer(en) oder ist AntriebList (bzw. ein Antrieb darin) selbst ein Zubehoer oder wie ist da der Zusammenhang?


die antriebList ist eine eigene liste mit objekten von typ Zubehoer drin.

Mit diesem Code ev. etwas verständlicher:


C#-Quelltext
1:
comboBoxAntrieb.SelectedItem = zubehoerViewModel.antriebList.First(x => x.ZubehoerID == ((from z in selectedCar.Zubehoer where z.ZubehoerTypID == 3 select z.ZubehoerID).FirstOrDefault()));                    


daeve - Mo 16.01.12 18:41


C#-Quelltext
1:
comboBoxAntrieb.SelectedItem = zubehoerViewModel.antriebList.First(x => x.ZubehoerID == ((from z in selectedCar.Zubehoer where z.ZubehoerTyp.ZubehoerTyp1 == "Antrieb" select z.ZubehoerID).FirstOrDefault()));                    


so funktioniert es, danke für den tip mit First ;)