0

テスト用にこのクラスを作成します。クラスの List と比較して、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

まあ、要素Containsを呼び出すつもりです-そしてまた使用するかもしれません(私はそれを疑っていますが、とにかく一貫してそれをオーバーライドする必要があります)。したがって、オーバーライドしてin にする必要があります。(デフォルトでは、参照の等価性が得られます。)EqualsGetHashCodeEquals(object)GetHashCode()FileNode

データベースで実行されるクエリで使用しようとするとすぐに、まったく異なる動作をする可能性があることに注意してください-その時点で/メソッドをContains見ていないでしょう。EqualsGetHashCode

于 2013-01-22T13:36:17.323 に答える