将两个列表与 LINQ (查询语法或其他方式)进行比较的最佳方法是什么(平均而言)
var A = new [] { 1, 2, 3, ... };
var B = new [] { 4, 1, 5, ... };
bool match =
// Some LINQ expression
这样match
当第一个列表中的至少一个元素(在这种情况下为 1)等于第二个列表中的一个元素时,这将是真的吗?我不需要知道有多少匹配,甚至是匹配哪一个,只要至少有一个匹配即可。
当然有。
A.Intersect(B).Any();
Intersect
在最不期望的情况下总是有用的。
您可以使用Intersect
,但这会计算您不需要的所有匹配项。所以Any
更好,因为它会短路:
bool match = A.Any(a => B.Any(b => b == a));
你也可以使用
A.Any(x => B.Contains(x))
您正在寻找Intersect
和Any
bool match = A.Intersect(B).Any();