我有一个IEnumerable,listOfOnes和一个IEnumerable,listOfTwos. 假设我可以将V的对象与T的对象进行比较,我想找到哪些项目在listOfOnes中,但不在listOfTwos中.反之亦然. 例如: var listOfOnes = new ListOne {
假设我可以将V的对象与T的对象进行比较,我想找到哪些项目在listOfOnes中,但不在listOfTwos中.反之亦然.
例如:
var listOfOnes = new List<One> { new One { name = "chris", type = "user" }, new One { name = "foo", type = "group" }, new One { name = "john", type = "user" }, }; var listOfTwos = new[] { new Two { name = "chris", type = "user" }, new Two { name = "john", type = "user" }, new Two { name = "the Steves", type = "group" } }; var notInTwos; //= listOfOnes.FindDifferences(listOfTwos); //find all objects not in listOfTwos. Should find 'foo'. var notInOnes; //= listOfTwos.FindDifferences(listOfOnes) //find all objects not in listOfOnes. Should find 'the Steves'.如果您可以将其中一种类型转换为另一种类型,则可以使用 Except和 Intersect,例如:
listOfOnes.Except(listOfTwos.Cast<One>())
否则,如果它等于第二个列表中的任何元素,则可以测试第一个列表中的每个元素:
var notInTwos = listOfOnes.Where(one => !listOfTwos.Any(two => two.Equals(one)));
这不会那么快.