【问题标题】:Check if element in list of lists contains another list [duplicate]检查列表列表中的元素是否包含另一个列表[重复]
【发布时间】:2021-04-14 09:28:29
【问题描述】:

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

0 1 2 3
4 5 6
23 24 25 28

等等

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

0 1 2

将被拒绝,函数将返回false,并且

9 10

将被接受,函数将返回true

【问题讨论】:

  • 你需要从这个开始,我怕我们不是代码编写服务。
  • @MathiasR.Jessen 谢谢好心的陌生人!问题解决了。
  • 我没有将其标记为重复,但该重复链接要么回答了您的问题,要么您没有正确解释自己。
  • 也许至少将您的示例数据显示为List<List<int>>List<int>,并显示您尝试过的无效。
  • 如果列表中只有一些成员存在于另一个列表中(即{0, 1, 2, 9, 10})怎么办?您只想将唯一编号添加为新列表 ({9, 10}),还是全部添加?请提供更多信息。

标签: c# arrays list function contains


【解决方案1】:

如果我理解正确,您想搜索 List<List<int>> 中的所有列表以查看是否有任何包含一组数字,如果没有,则将这些数字添加为新列表。

一种方法是使用 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);

【讨论】:

    猜你喜欢
    • 2012-08-01
    • 2015-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-09
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多