比较两个对象集合

时间:2009-07-02 19:07:02

标签: 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));
        }

3 个答案:

答案 0 :(得分:5)

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

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

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

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

答案 1 :(得分:2)

尝试这样的事情:

var features = (from af in availableFeatures select af.FeatureCode)
            .Intersect(from uf in userFeatures select uf.FeatureCode);

答案 2 :(得分:1)

这个怎么样?

    IEnumerable<int> a = new List<int>() { 1, 2 };
    IEnumerable<int> b = new List<int> { 2, 3 };

    var result = a.Except(b);
    a = result;