如何使用包含二维列表

时间:2012-11-15 10:39:30

标签: c#

如何找到列表列表中的任何列表是否包含另一个列表中的所有元素? 类似于列表列表.contains(列表),其中列表(列表)是stanjaDKA,列表是tmpzaNormalanPrijelaz,所有列表成员都是int类型? 我尝试了这个,但最后我在stanjaDKA找到了很多州。

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

2 个答案:

答案 0 :(得分:1)

  

如何找到X列表中的任何X

使用LINQ的Any

bool anyXInListOfX = myListOfX(x => someConditionOnX);

  

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

如果您不关心重复元素(即如果您对{1}包含{1, 1}中的所有元素感到高兴),可以使用LINQ的Except并检查是否存在什么都没有留下:

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

但是,“任何列表包含所有元素”等同于“所有列表包含所有元素”和{ {1}}取消了上面的don't,所以在你的情况下我会做类似的事情

!

如果“如果所有 if (stanjaDKA.All(l => tmpzaNormalanPrijelaz.Except(l).Any())) { stanjaDKA.Add(tmpzaNormalanPrijelaz); } 中的每个<{em}}中的列表都缺少 stanjaDKA中的至少一个元素,则为{em> {1}}至tmpzaNormalanPrijelaz

答案 1 :(得分: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();

你也应该看看这个Link也许你需要它