我有2个收藏集,其中一个可用功能,另一个是用户功能。我想删除其他集合中包含功能代码的可用功能中的项目,但找不到正确的语法。

我包含了当前无法编译的代码(它抱怨我不能使用“ ==”运算符,我的Linq知识很少)

Linq是执行此操作的最佳方法吗?任何帮助,将不胜感激。

        AvailableFeatureViewListClass availableFeatures = (AvailableFeatureViewListClass)uxAvailableList.ItemsSource;
        UserFeatureListClass userFeatures = (UserFeatureListClass)uxUserFeatureList.ItemsSource;

        foreach (UserFeatureClass feature in userFeatures)
        {
            availableFeatures.Remove(availableFeatures.First(FeatureCode => FeatureCode == feature.FeatureCode));
        }

最佳答案

Except方法与自定义EqualsIEqualityComparer实现一起用于您的类型(收集项的类型并不是很明显):

var features = availableFeatures.Except(userFeatures, new FeatureCodeComparer());


如果availableFeatures只是整数的集合,则可以执行以下操作:

var features = availableFeatures.Except(userFeatures.Select(x => x.FeatureCode));

关于c# - 比较对象的两个集合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1076144/

10-12 03:12