gpt4 book ai didi

c# - List.except 自定义类

转载 作者:太空狗 更新时间:2023-10-29 20:45:33 27 4
gpt4 key购买 nike

假设我有一个自定义类:

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);

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

2012 基安蒂 12

2011 基安蒂 6

谢谢。

最佳答案

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

因此最好简单地使用Where:

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

以人类可读的形式:

I want all WineCellars where the wine name is not present in the list of exceptions.

顺便说一句,WineCellar 类名有点误导;这些元素不是地窖,它们是库存元素。

关于c# - List.except 自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17782733/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com