我试图做一个“Except()”,但它没有用

时间:2012-11-13 14:02:10

标签: c# except selectlistitem

  

可能重复:
  how can I do use Except() between two SelectListItem lists

我有两个类型IEnumerable <SelectListItem>的列表我需要创建一个新的IEnumerable <SelectListItem>,其中第一个列表的元素在第二个列表中不存在。 我怎么能这样做?

我尝试使用Except()但是它无法正常工作

示例代码:

IEnumerable<SelectListItem> SelectListItemA = ....;
IEnumerable<SelectListItem> SelectListItemB = ....;
IEnumerable<SelectListItem> Except = SelectListItemA.Except(SelectListItemB);

1 个答案:

答案 0 :(得分:-1)

这应该有效,请this example

            double[] numbers1 = { 2.0, 2.1, 2.2, 2.3, 2.4, 2.5 };
            double[] numbers2 = { 2.2 };

            IEnumerable<double> onlyInFirstSet = numbers1.Except(numbers2);

            foreach (double number in onlyInFirstSet)
                Console.WriteLine(number);

            /*
             This code produces the following output:

             2
             2.1
             2.3
             2.4
             2.5
            */

我想问题是你的情况下的Equality比较器(对于SelectedListItem)没有定义,或者更好地说看起来相同的东西不是简单相同的对象,在这种情况下你必须提供[IEqualityComparer]定义哪些元素实际上等于1

public static IEnumerable<TSource> Except<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second,
    IEqualityComparer<TSource> comparer
)