当前位置:  开发笔记 > 编程语言 > 正文

如何检查列表是否包含相同顺序的另一个列表

如何解决《如何检查列表是否包含相同顺序的另一个列表》经验,为你挑选了1个好方法。

在c#中是否有任何简单的方法来检查列表是否包含另一个列表?这是一个例子,我有:

var list1 = new List() {1, 2, 3, 4, 5, 6,}; 第二个 var list2 = new List() {5, 6};

此列表是第一个列表的一部分,因此它应返回true.

var list1 = new List() {1, 2, 3, 4, 5, 6,}; 并且 var list3 = new List() {1, 3};应该返回false.

它不是要检查第一个列表中的所有元素是否都存在于第二个列表中,而是关于顺序.它必须具有相同的顺序.



1> Enigmativity..:

这对我有用:

public bool ContainsSubsequence(List sequence, List subsequence)
{
    return
        Enumerable
            .Range(0, sequence.Count - subsequence.Count + 1)
            .Any(n => sequence.Skip(n).Take(subsequence.Count).SequenceEqual(subsequence));
}

此代码用于Enumerable.Range遍历sequence其中可能相同的每个可能的起点subsequence,并检查sequencesubsequence此位置相同大小的段是否实际等于subsequence.

所以对于这段代码:

var list1 = new List() { 1, 2, 3, 4, 5, 6, };
var list2 = new List() { 5, 6, };
var list3 = new List() { 1, 3, };

Console.WriteLine(ContainsSubsequence(list1, list2));
Console.WriteLine(ContainsSubsequence(list1, list3));

我明白了:

True
False

推荐阅读
牛尾巴2010
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有