Wpf 谓词压缩两个集合并用作绑定源
我有两个集合,Wpf 谓词压缩两个集合并用作绑定源,wpf,collections,binding,predicate,Wpf,Collections,Binding,Predicate,我有两个集合,ObservableCollection和一个ObservableCollection,其中Lap保存一场赛车的圈数数据和Racer,你猜,是赛车手的数据。两个对象都知道racerId 有没有一种方法可以让我想出一个谓词,将其用作将这两个集合压缩在一起的Zip-func?我想这样做的原因是绑定它们DataGrid 我已经看到了,但不太明白如何将它与谓词一起使用 我想到了: laps.Zip(participants, (lap, racer) => lap.Enrollmen
ObservableCollection
和一个ObservableCollection
,其中Lap
保存一场赛车的圈数数据和Racer
,你猜,是赛车手的数据。两个对象都知道racerId
有没有一种方法可以让我想出一个谓词,将其用作将这两个集合压缩在一起的Zip
-func?我想这样做的原因是绑定它们DataGrid
我已经看到了,但不太明白如何将它与谓词一起使用
我想到了:
laps.Zip(participants, (lap, racer) => lap.EnrollmentId == racer.EnrollmentId);
但我如何将其映射到DataGridColumns 我认为您是在寻找一个
连接
,因为您确实希望根据匹配的Id组合这两个集合的属性。要使Zip()
工作,两个集合必须已经具有相同数量的条目,并且具有相同的匹配顺序
var results = from racer in participants
join l in laps
on racer.EnrollmentId equals l.EnrollmentId
select new
{
//select the properties you are interested in here
//or just use both:
Racer = racer,
Lap = l
}
结果也应该被观察到吗?我认为应该。但它应该是一个表达式,用作
DataGrid
的绑定上下文。那有必要吗?那要看情况了。在显示项目时,是否要从集合中添加或删除项目?如果是,则observable更好。请注意,zip不需要相同数量的条目,因此,例如,最后几个参赛者可能没有任何与他们相关的lat。但对于那些这样做的人来说,它仍然需要匹配顺序。生成的集合是否能够成为数据绑定源(ItemSource
)?还不能让它工作。