Jam*_* Ko 3 .net c# linq collections ienumerable
我最近遇到了一个场景,我需要检查一下是否IEnumerable<T>有一些IEnumerable<T>前缀.我搜索并没有找到现有的StackOverflow答案,因此我决定以下面的答案形式提供我自己的解决方案.
您的扩展程序没问题,但您可以使用现有的Enumerable.Zip+ All:
var longerSeq = new[] { "SOME", "IMPORTANT", "WORDS" };
var shorterSeq = new[] { "some", "important" };
bool startsWithCaseInsensitive = longerSeq
.Zip(shorterSeq, (l, s) => string.Equals(l, s, StringComparison.OrdinalIgnoreCase))
.All(b => b); // are all bools true? Returns false on first false
Run Code Online (Sandbox Code Playgroud)
文件:
该方法将第一序列的每个元素与在第二序列中具有相同索引的元素合并.如果序列没有相同数量的元素,则该方法合并序列,直到它到达其中一个序列的末尾
由于Zip使用延迟执行,如果第一个已经产生,它将不会评估所有false.