自定义类上的 List. except

2024-03-16

假设我有一个自定义类:

public class WineCellar
{

    public string year;
    public string wine;
    public double nrbottles;
}

假设我现在有这个自定义类的列表:

List<WineCellar> orignialwinecellar = List<WineCellar>();

包含这些项目:

2012 Chianti 12

2011 Chianti 6

2012 Chardonay 12

2011 Chardonay 6

我知道,如果我想比较两个列表并返回一个新列表,其中仅包含其他列表中不存在的项目,我会这样做:

var newlist = list1.Except(list2);

我如何将其扩展到自定义类?可以说我有:

string[] exceptionwinelist = {"Chardonay", "Riesling"};

我希望返回这个:

List<WineCellar> result = originalwinecellar.wine.Except(exceptionwinelist);

这个伪代码显然不起作用,但希望说明我正在尝试做的事情。然后,这应该返回自定义类酒窖的列表,其中包含以下项目:

2012 基安蒂 12

2011 基安蒂 6

Thanks.


你真的不想使用Except在这里,因为您没有收集WineCellar用作黑名单的对象。你拥有的是一组规则:“我不想要具有这样那样的酒名的对象”。

因此最好简单地使用Where:

List<WineCellar> result = originalwinecellar
    .Where(w => !exceptionwinelist.Contains(w.wine))
    .ToList();

以人类可读的形式:

我想要所有葡萄酒名称未出现在例外列表中的 WineCellars。

顺便说一句,WineCellar类名有点误导;这些物品不是地窖,而是库存物品。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义类上的 List. except 的相关文章

随机推荐