c# - 如何检查列表列表是否包含另一个列表

标签 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++)
        {
            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
                {

                }
            }                                                  
        }

这是我的代码。当我调试时,我可以看到 temp 值是正确的,并且在第二个循环中,tempEklenenler 列表中,但它总是在 if block 。例如,第一个循环显示 temp[0]=36 并且 temp[1]=42 进入 if block 并在第二个循环再次 temp[0]= 36temp[1]=42 还有 Eklenenler[0][0]=36Eklenenler[0][1]=42 所以它包含 temp 但它仍然进入。我如何解决这个问题以及为什么它返回 false 并且在 Eklenenler 中找不到这个 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;

关于c# - 如何检查列表列表是否包含另一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43143068/

相关文章:

c# - 实体或复杂类型 'x' 无法在 linq to entities 查询中构建

c# - 单元测试 Xamarin.Forms 应用程序时引发 Xamarin.Essentials.NotImplementedInReferenceAssemblyException

c# - 没有要从 MSTest 执行的测试

c# - 以自定义顺序获取列表的最快方法

r - 使用一个相似的列对两个数据框列表执行函数

python - 对词典列表进行排序和分组

c# - 对类型为 T 的列表进行排序

c# - 删除 WPF IsDefault

c# - System.IO.FileNotFoundException 未处理消息 =“The specified module could not be found. (Exception from HRESULT: 0x8007007E)”

python - 如何根据第二个索引列表重新排列一个列表