假设我有一个自定义类:
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(使用前将#替换为@)