检查列表列表中的元素是否包含另一个列表

Check if element in list of lists contains another list

我有 ListListsarrays 个。它包含某些有序序列:

0 1 2 3
4 5 6
23 24 25 28

等等

我想添加另一个序列,但前提是它是唯一的(简单的)并且 Lists 中的任何一个都不包含它。例如:

0 1 2

会被拒绝,函数会returnfalse

9 10

将被接受,函数将 return true.

如果我没理解错的话,你想搜索 List<List<int>> 中的所有列表,看看是否包含一组数字,如果 none 包含,则将数字添加为一个新列表。

一种方法是使用 Linq:

public static void AddListIfNotExist(List<List<int>> lists, List<int> newList)
{
    if (lists == null || newList == null) return;

    if (!lists.Any(list => newList.All(item => list.Contains(item))))
    {
        lists.Add(newList);
    }
}

在使用中它可能看起来像:

var lists = new List<List<int>> 
{
    new List<int> { 0, 1, 2, 3 },
    new List<int> { 4, 5, 6 },
    new List<int> { 23, 24, 25, 28 }
};

var newList1 = new List<int> { 0, 1, 2 };
var newList2 = new List<int> { 9, 10 };

AddListIfNotExist(lists, newList1);
AddListIfNotExist(lists, newList2);