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
)?还不能让它工作。