【发布时间】:2020-04-16 02:38:12
【问题描述】:
我正在解决我有两个字符数组的问题,如下所示:
cArray1 = ['p', 'a', 'n', 'd', 'a']
cArray2 = ['a','v','d','e','r','e','n','j','j','a','v','h' , 'v', 'p']
我需要检查 cArray1 的所有元素是否都存在于 cArray2 中。我使用 Linq 在 C# 中编写了一个解决方案:
var found = cArray1.Select(c => char.ToUpper(c)).Distinct().All(c => cArray2.Contains(c))
上述逻辑在大多数情况下都可以正常工作,但“Distinct”命令会导致一些问题。如果我们考虑我在这里提到的两个数组,那么 'found' 应该是 'true' 仅当字符 [p, a, n, d, a] 出现在 cArray2 中时。但是现在,由于“不同”,我得到了 [p, a, n, d] 的“真”。
【问题讨论】:
-
var found = cArray1.GroupBy(c1 => c1).All(g => cArray2.Count(c2 => c2 == g.Key) >= g.Count())? -
是的..这也很有效。非常感谢!