我有两个对象模型的集合,我需要逐个属性进行比较以检测它们是否相等。
ObservableCollection<LayerModel> SourceDrawingLayers
...以及:
ObservableCollection<LayerModel> TargetDrawingLayers
我已经得到了一些很好的关于创建非等值连接LINQ查询的建议,并且在我的应用程序中取得了很好的效果,但现在我想加速它:
var onOffQuery = from target in TargetDrawingLayers
from source in SourceDrawingLayers
where target.Name == source.Name && target.OnOff != source.OnOff
select target;
我的理解是,我将查询乘以源图中的项目数 *
目标图中的项目数 *
我填入 TargetDrawingLayers
的目标图数。
我想使用 Join
来加快此操作,但在 !=
部分遇到了问题。
我尝试着做了一些调整:
var newQuery = from source in SourceDrawingLayers
join target in TargetDrawingLayers
on target.name
where target.OnOff != source.OnOff
select target;
但是我对语法感到困惑。有人能为我指点迷津吗?
此外,这是否会显著提高性能?
target.OnOff != source.OnOff
,那么对于每一行不匹配的数据,都会进行一次乘法操作,这是一个很大的数据集。 - Trainpublic object Tag { get; set; }
或者直接命名一个类,就可以完成链接,需要时只需引用Tag
。不再需要 30 秒的处理时间,而是实时访问。 - ΩmegaMan