可能重复:
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);
答案 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
)