c# – 如何获取列表中和不在列表中的项目
发布时间:2020-12-16 01:35:21 所属栏目:百科 来源:网络整理
导读:我有一个IEnumerable,listOfOnes和一个IEnumerable,listOfTwos. 假设我可以将V的对象与T的对象进行比较,我想找到哪些项目在listOfOnes中,但不在listOfTwos中.反之亦然. 例如: var listOfOnes = new ListOne { new One { name = "chris",type = "user" },new
我有一个IEnumerable,listOfOnes和一个IEnumerable,listOfTwos.
假设我可以将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",}; var listOfTwos = new[] { new Two { name = "chris",new Two { name = "john",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))); 这不会那么快. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |