-1

可能重复:
如何在两个 SelectListItem 列表之间使用 except()

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

我试图用 a 来做,Except()但没有用

示例代码:

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

4

1 回答 1

-1

这应该有效,看看这个例子

            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
            */

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

public static IEnumerable<TSource> Except<TSource>(
    this IEnumerable<TSource> first,
    IEnumerable<TSource> second,
    IEqualityComparer<TSource> comparer
)
于 2012-11-13T14:04:12.860 回答