比较两个对象集合

Mar*_*lec 2 c# linq

我有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));
        }
Run Code Online (Sandbox Code Playgroud)

Meh*_*ari 5

对您的类型使用Except自定义EqualsIEqualityComparer实现的方法(您的集合项的类型不是很明显):

var features = availableFeatures.Except(userFeatures, new FeatureCodeComparer());
Run Code Online (Sandbox Code Playgroud)

如果availableFeatures它只是一个整数集合,你只需执行以下操作:

var features = availableFeatures.Except(userFeatures.Select(x => x.FeatureCode));
Run Code Online (Sandbox Code Playgroud)