1

我想知道是否有办法在可绑定的 linq 中做到这一点:

var LeftItems = AllItems.Where(p => !RightItems.Contains(p)));

我尝试过自由使用 AsBindable(),但它对我不起作用..

var LeftItems = AllItems.AsBindable().Where(p => !RightItems.AsBindable.Contains(p)));

如果 BindableLINQ 不支持这一点,是否有一个聪明的解决方法我没有看到,或者是否有另一个类似的包支持它?

4

3 回答 3

0

我认为您正在寻找 except 方法。

var LeftItems = AllItems.Except(RightItems);

不确定这是否在可绑定的 linq 中实现。

否则你应该试试Obtics

于 2009-08-24T21:48:45.460 回答
0

.Where() 方法是最后一个运行的方法,因此 .Where() 扩展方法的结果类型是 leftItems 将具有的类型。如果您希望结果可绑定,我认为您应该简单地执行以下操作:

var leftItems = AllItems.Where(p => !RightItems.Contains(p)).AsBindable();
于 2009-06-28T09:16:20.810 回答
0

试试我的ObservableComputations库。使用该库:

var LeftItems = AllItems.Filtering(p => !RightItems.ContainsComputing(p).Value));

为了使上面的代码工作 AllItems 和 RightItems 应该实现 INotifyCollectionChanged (ObservableCollection)/

于 2019-11-21T12:28:46.317 回答