0

我为测试创建了这个类。我想与类的列表进行比较,并在 ListA 和 ListB 之间获得不同的类。在我的示例中,结果仅获得 ListB 类。

我对字符串列表做同样的细化并工作

类示例

public class FileNode
{
    public string Source { get; set; }
    public int Id { get; set; }
}

List<FileNode> ListA = new List<FileNode>
{
    new FileNode{ Id = 1, Source="a" },
    new FileNode{ Id = 2, Source="b" },
};

List<FileNode> ListB = new List<FileNode>
{
    new FileNode{ Id = 1, Source="a" },
    new FileNode{ Id = 2, Source="b" },
    new FileNode{ Id = 3, Source="c" },
};
List<FileNode> ListAB = ListB.Where(m => !ListA.Contains(m)).ToList();

字符串示例,它的作品

List<string> a = new List<string> {"a","b","c","d","e" };
List<string> b = new List<string> {"a","b","c","d" };
List<string> ab = a.Where(m => !b.Contains(m)).ToList();
4

1 回答 1

4

WellContains将调用Equals元素 - 并且也可能使用GetHashCode(我对此表示怀疑,但无论如何你应该始终如一地覆盖它)。所以你需要覆盖Equals(object)GetHashCode()in FileNode。(默认情况下,您将获得引用相等。)

请注意,一旦您开始尝试Contains在将在数据库中执行的查询中使用,它的行为可能会完全不同 - 此时它不会查看您的Equals/GetHashCode方法。

于 2013-01-22T13:36:17.323 回答