从列表中删除项目(如果该项目存在于其他列表中)

本文关键字:列表 于其他 其他 存在 删除项目 如果 项目 | 更新日期: 2023-09-27 17:57:28

我有一个类:

[Serializable()]
public class Computer
{
    [System.Xml.Serialization.XmlElement("Id")]
    public int Id { get; set; }
    [System.Xml.Serialization.XmlElement("Name")]
    public string Name { get; set; }
    [System.Xml.Serialization.XmlElement("Cost")]
    public double Cost { get; set; }
    public string NameCost
    {
        get
        {
            return Name + " " + Cost.ToString(CultureInfo.InvariantCulture);
        }
    }
}

我有三份清单。其中一台包含成本最低的计算机,另一台则包含成本最高的计算机。包含所有元素的最后一个列表。我需要删除列表中的所有元素,除了其他两个列表中存在的元素。你知道吗?救命,祝你今天愉快!

从列表中删除项目(如果该项目存在于其他列表中)

效率不高,但应该有效:

listWithAllPC = listWithAllPC
    .Where(pc => listWithMinCostPC.Any(minPC => pc.Id == minPC.Id)
              && listWithMaxCostPC.Any(maxPC => pc.Id == maxPC.Id))
    .ToList();
var idList = list1.Union(list2).Select(x => x.Id).ToList();
list3.RemoveAll(x => !idList.Contains(x.Id));