我有一个List<List<int>>
,我想在其中插入新的List<int>
。我想在添加新的List<int>
之前检查一下新的List<List<int>>
。
例如
List<List<int>> MasterList = new List<List<int>>();
List<int> childList = new List<int>();
我已经尝试过
MaterList.Contains, MasterList.Any
但没有任何帮助
例如
MasterList(1)=1,2,3
MasterList(2)=4,5
但是当我看到1,2,3或4,5再次出现时,不想输入它,因为它们已经在MasterList中某个位置了
答案 0 :(得分:6)
您可以使用Linq的SequenceEqual
if (MasterList.Any(c => c.SequenceEqual(childList)))
{
//contains
}
答案 1 :(得分:0)
List<List<int>> MasterList = new List<List<int>>();
List<int> childList1 = new List<int>() { 1, 2, 3 };
List<int> childList2 = new List<int>() { 4, 5 };
MasterList.Add(childList1);
// MasterList.Add(childList2);
Console.WriteLine(MasterList.Contains(childList1));
Console.WriteLine(MasterList.Contains(childList2));
Console.WriteLine(MasterList[0].Contains(1));
Console.WriteLine(MasterList[0].Contains(7));
//True
//False
//True
//False
也许我不明白您的问题,对不起。
答案 2 :(得分:0)
您可以像这样比较两个列表是否相等:
class Plugin():
plugins = []
@classmethod
def __init_subclass__(cls, **kwargs):
super().__init_subclass__(**kwargs)
if getattr(cls, 'do_something') is getattr(__class__, 'do_something'):
print("Warning: Your plugin might not work, missing 'do_something'")
else:
__class__.plugins.append(cls())
def do_something(self):
...
class Render(Plugin):
def __init__(self):
print("Render init")
for plugin in Plugin.plugins:
plugin.do_something()
现在,使用此功能,您可以使用Linq函数搜索匹配列表:
bool AreListsIdentical(List<int> lhs, List<int> rhs)
{
if(lhs.Count != rhs.Count) return false;
return lhs.Zip(rhs, (l,r) => l == r).All(value => value);
}
答案 3 :(得分:0)
我测试了以下内容,并且有效:
List<List<int>> masterList = new List<List<int>>() {
new List<int>() { 1, 2, 3},
new List<int>() { 1, 2},
new List<int>() { 1, 2, 3, 4},
new List<int>() { 1, 2, 5},
new List<int>() { 1, 3, 7},
new List<int>() { 2, 3, 4},
new List<int>() { 1, 5, 8},
new List<int>() { 1, 4, 9}
};
List<int> newList = new List<int>() { 1,2,5};
Boolean contains = masterList.Any(x => (x.Count() == newList.Count()) && (x.Select((y, i) => y == newList[i]).All(y => y)));
答案 4 :(得分:0)
这种方式:
List<List<int>> listOfIntLists = new List<List<int>>() {
new List<int>(){ 1,2 },
new List<int>(){ 3,4 },
new List<int>(){ 5,6 }
};
List<int> integers = new List<int>() { 1, 2 };
if(listOfIntLists.Any(x => x.All(y => integers.Any(z => z == y))) == false)
{
listOfIntLists.Add(integers);
}