0

如何查找列表列表中的任何列表是否包含另一个列表中的所有元素?类似于 list list .contains(list),其中 list(list) 是stanjaDKA,而 list 是tmpzaNormalanPrijelaz,并且所有列表成员都是 int 类型?我试过这个,但最后我进入了很多状态stanjaDKA

int indeks=stanjaDKA.FindIndex(x=>x.Equals(tmpzaNormalanPrijelaz));
if (indeks==-1 && tmpzaNormalanPrijelaz.Count>0)
{
    stanjaDKA.Add(tmpzaNormalanPrijelaz);
}
4

2 回答 2

1

如何查找 X 列表中是否有任何 X

使用 LINQ 的Any

bool anyXInListOfX = myListOfX(x => someConditionOnX);

列表包含另一个列表中的所有元素

如果您不关心重复元素(即,如果您很高兴{1}包含 中的所有元素{1, 1}),您可以使用 LINQExcept并检查是否有任何剩余:

bool firstListContainsAllElementsInSecondList =
    !mySecondList.Except(myFirstList).Any();

但是,“任何列表包含所有元素”相当于“所有列表包含所有元素”,并且上面的don't取消!,所以在你的情况下,我会做类似的事情

if (stanjaDKA.All(l => tmpzaNormalanPrijelaz.Except(l).Any()))
{
    stanjaDKA.Add(tmpzaNormalanPrijelaz);
}

这读作“如果中的所有列表stanjaDKA都缺少中的至少一个元素tmpzaNormalanPrijelaz,则添加tmpzaNormalanPrijelazstanjaDKA

于 2012-11-15T11:34:17.837 回答
0

取决于你真正想要什么,这将帮助你做市长的事情

        // Sample List<List<int>>
        var listList = new List<List<int>>();
        listList.Add(new List<int>() { 0, 1, 2, 3, 4 });
        listList.Add(new List<int>() { 0, 1, 2, 3, 4 });
        listList.Add(new List<int>() { 1, 1, 2, 3, 4 });
        listList.Add(new List<int>() { 1, 1, 1, 1, 1 });
        listList.Add(new List<int>() { 5, 6, 7, 8, 9 });

        // the List you are seaching for
        var searchList = new List<int>() { 10 };

        foreach(List<int> list in listList)
        {
            var newList =list.Intersect(searchList);
            if (newList.Count() == searchList.Count)
            {
                string elements = "";
                foreach (int item in newList)
                {
                    elements += item + " ";
                }
                Console.WriteLine(elements);
            }
        }

        Console.ReadLine();

你也应该看看这个链接也许你需要它

于 2013-05-03T10:11:45.197 回答