我有以下代码:
List<string> test1 = new List<string> { "@bob.com", "@tom.com" };
List<string> test2 = new List<string> { "[email protected]", "[email protected]" };
我需要删除 test2 中具有 @bob.com 或 @tom.com 的任何人。
我尝试过的是这样的:
bool bContained1 = test1.Contains(test2);
bool bContained2 = test2.Contains(test1);
bContained1 = false
but bContained2 = true
。我不想循环遍历每个列表,而是使用 Linq 查询来检索数据。 bContained1 与我在下面创建的 Linq 查询的条件相同:
List<string> test3 = test1.Where(w => !test2.Contains(w)).ToList();
上面的查询适用于完全匹配,但不适用于部分匹配。
我查看了其他查询,但我可以找到与 Linq 的密切比较。任何想法或任何你可以指出我的地方都会有很大的帮助。
var test2NotInTest1 = test2.Where(t2 => test1.Count(t1 => t2.Contains(t1))==0);
根据蒂姆的建议,更快的版本:
var test2NotInTest1 = test2.Where(t2 => !test1.Any(t1 => t2.Contains(t1)));
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)