返回List包含List中不存在的项

本文关键字:List 不存在 返回 包含 | 更新日期: 2023-09-27 18:02:56

在c#中,我有以下类:

public class SQLColour
{
    public string ID { get; set; }
    public string Code { get; set; }
    public string Name { get; set; }
    public string CorporateID { get; set; }
}

我有一个名为List1的List<SQLColour>和一个名为List2的List<SQLColour>

我怎么能返回一个List<SQLColour>,它的项目有一个ID,存在于List1,但不存在于List2?

Thanks in advance

返回List<t>包含List<t>中不存在的项

我通常使用以下模式,作为Enumerable。Except不接受泛型谓词:

// Find all IDs in List2, using a HashSet to improve bounds
var idsList2 = new HashSet(List2.Select(x => x.Id));
// Select from List1 only elements which ID does not appear in List2
var onlyList1ById = List1.Where(x => !idsList2.Contains(x.Id));

HashSet不是必需的,但它有更好的边界,因此是我的标准模式。