Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何检查列表列表是否包含其他列表_C#_List - Fatal编程技术网

C# 如何检查列表列表是否包含其他列表

C# 如何检查列表列表是否包含其他列表,c#,list,C#,List,我想创建一个包含两个int值的列表,比如说它arrfirst,另一个列表包含arrfirst的列表,比如说它arrsecond,然后检查arrsecond是否包含定义的arrfirst。现在我创建了列表,但当我尝试使用.Contains时,它不起作用 List<List<int>> Eklenenler = new List<List<int>>(); for (int i = 0; i < YourTable.Rows.Count; i+

我想创建一个包含两个int值的列表,比如说它
arrfirst
,另一个列表包含
arrfirst
的列表,比如说它
arrsecond
,然后检查
arrsecond
是否包含定义的
arrfirst
。现在我创建了列表,但当我尝试使用
.Contains
时,它不起作用

List<List<int>> Eklenenler = new List<List<int>>();

for (int i = 0; i < YourTable.Rows.Count; i++)
        {
            prjAd = YourTable.Rows[i].Field<string>("F1");
            if (prjAd != "Servis Adresi")
            {
                wesAd = YourTable.Rows[i].Field<string>("F2");
                RowPrj = tbProjeler.AsEnumerable().Where(r => r.Field<string>("prjAd") == prjAd).FirstOrDefault();
                RowWes = tbServisler.AsEnumerable().Where(k => k.Field<string>("wesAd") == wesAd).FirstOrDefault();
                prjId = RowPrj.Field<int>("prjId");
                wesId = RowWes.Field<int>("wesId");
                List<int> temp = new List<int>();
                temp.Add(prjId);
                temp.Add(wesId);
                if (!Eklenenler.Contains(temp))
                {
                    sqlExProjeEkle = "INSERT INTO NLK_PRJ_Webservisler (prjId,wesId) Values (" + prjId + "," + wesId + ")";
                    dco.Execute(sqlExProjeEkle);
                    Eklenenler.Add(temp);

                }
                else
                {

                }
            }                                                  
        }
List ekleneler=new List();
for(int i=0;ir.Field(“prjAd”)==prjAd.FirstOrDefault();
RowWes=tbServisler.AsEnumerable()。其中(k=>k.Field(“wesAd”)==wesAd.FirstOrDefault();
prjId=行PRJ.字段(“prjId”);
wesId=RowWes.Field(“wesId”);
列表温度=新列表();
临时添加(prjId);
温度添加(wesId);
如果(!ekleneler.Contains(temp))
{
sqlExProjeEkle=“插入NLK_PRJ_webservicer(prjId,wesId)值(“+prjId+”,“+wesId+”);
dco.Execute(sqlExProjeEkle);
Eklenler.添加(温度);
}
其他的
{
}
}                                                  
}

这是我的密码。当我调试时,我可以看到
temp
值是正确的,并且在第二个循环中,
temp
ekleneler
列表中,但它总是在
if
块中。例如,第一个循环显示
temp[0]=36
temp[1]=42
进入if块,第二个循环再次显示
temp[0]=36
temp[1]=42
也显示
ekleneler[0][0]=36
ekleneler[0][1]=42
,因此它包含temp,但仍然进入。我如何解决此问题,以及为什么返回false并且在
ekleneler
中找不到此
temp
。谢谢。

你可以用linq在一行中完成,就像这样

if (!Eklenenler.Any(c => c.SequenceEqual(temp)))
{
    sqlExProjeEkle = "INSERT INTO NLK_PRJ_Webservisler (prjId,wesId) Values (" + prjId + "," + wesId + ")";
    dco.Execute(sqlExProjeEkle);
    Eklenenler.Add(temp);

}
else
{

}
别忘了加上

using System.Linq;

你可以用linq在一行中完成,就像这样

if (!Eklenenler.Any(c => c.SequenceEqual(temp)))
{
    sqlExProjeEkle = "INSERT INTO NLK_PRJ_Webservisler (prjId,wesId) Values (" + prjId + "," + wesId + ")";
    dco.Execute(sqlExProjeEkle);
    Eklenenler.Add(temp);

}
else
{

}
别忘了加上

using System.Linq;

这里有一个使用foreach循环的答案

foreach (List<int> list in Eklenenler)
{
    if (list.SequenceEqual(temp))
    {
        //Do work
    }
}
foreach(ekleneler中的列表)
{
if(列表顺序相等(温度))
{
//工作
}
}

这里有一个使用foreach循环的答案

foreach (List<int> list in Eklenenler)
{
    if (list.SequenceEqual(temp))
    {
        //Do work
    }
}
foreach(ekleneler中的列表)
{
if(列表顺序相等(温度))
{
//工作
}
}
if(row.SequenceEquals(anotherRow))
if(row.SequenceEquals(anotherRow))