使用C#检查另一个列表中的值

时间:2018-12-14 14:45:57

标签: c# asp.net asp.net-mvc

我有一个包含112个元素(项目编号)的数组。我还有一个包含47个元素(项目编号)的列表

现在,我要检查47个元素的列表中是否包含112个元素的数组中的项目号之一。如果不存在,我将采取措施。

这是我的代码:

   for(var i = 0; i < value.Count(); i++) //Value contains 112
    {
        //Response contains 47 elements
        if(!response.Any(x => x.Vo.Item_No == Int32.Parse(value[i])))
        {
            modelBank.Add(new ModelBank { Item_No = value[i].ToString(), Item_Type = "ART", SameAs = "", Status = "3D Missing" });
        }
    }

这只会在我的模型库列表中添加2个对象。我希望它添加65个对象,因为缺少65个。

我想错了吗?

2 个答案:

答案 0 :(得分:0)

由于数组和列表的两个元素都是相同的类型,因此可以使用List.Contains方法检查是否存在。

foreach(var item in value)
{
    if(!response.Contains(item))
    {
        //Do your action
    }
}

答案 1 :(得分:0)

您的数据显然不是您期望的,因为以下代码可以正常工作,即,它为modelBank添加了65个值:

int[] value = Enumerable.Range(1, 112).ToArray();
int[] response = Enumerable.Range(1, 47).ToArray();
List<int> modelBank = new List<int>();
for (var i = 0; i<value.Length; i++)
{
    if (!response.Any(x => x == value[i]))
    {
        modelBank.Add(value[i]);
    }
}

换句话说,这应该起作用:

var modelBank = value.Where(x=> !response.Any(y => y.Vo.Item_No == Int32.Parse(x)).ToList();