我有一个班级:
[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);
}
}
}
我有三个清单。其中一个包含成本最低的计算机,另一个包含最高成本的计算机。包含所有元素的最后一个列表。我需要删除所有元素的列表,除了那些存在于其他两个列表中的元素。你知道吗?帮助,PLZ。祝你有愉快的一天!
答案 0 :(得分:2)
效率不高但应该有效:
listWithAllPC = listWithAllPC
.Where(pc => listWithMinCostPC.Any(minPC => pc.Id == minPC.Id)
&& listWithMaxCostPC.Any(maxPC => pc.Id == maxPC.Id))
.ToList();
答案 1 :(得分:-1)
var idList = list1.Union(list2).Select(x => x.Id).ToList();
list3.RemoveAll(x => !idList.Contains(x.Id));