返回具有 List<t> 中不存在的项目的 List<t> [重复]

Posted

技术标签:

【中文标题】返回具有 List<t> 中不存在的项目的 List<t> [重复]【英文标题】:Return a List<t> that has items that do not exist in a List<t> [duplicate] 【发布时间】:2014-06-30 14:07:41 【问题描述】:

在 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&lt;SQLColour&gt; 和一个名为 List2 的 List&lt;SQLColour&gt;

我如何返回 List&lt;SQLColour&gt;,其中的项目的 ID 存在于 List1 但不存在于 List2?

提前致谢

【问题讨论】:

这可能会有所帮助:***.com/questions/3944803/… 【参考方案1】:

我通常使用以下模式,因为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 不是必需的,但它有更好的界限,因此是我的标准模式。

【讨论】:

以上是关于返回具有 List<t> 中不存在的项目的 List<t> [重复]的主要内容,如果未能解决你的问题,请参考以下文章

对象初始化器在 List<T> 中不起作用

java 求在 listA中存在 在listB中不存在的元素

使用 linq 到 List<T> 的数据集

为啥我在 List<List<T>> 中复制 List<T> 时存在依赖关系? [复制]

从一个集合中过滤另一个集合中存在的项(类似in)

CS0433: 类型 'List<T>' 存在于两者中