我有一个包含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个。
我想错了吗?
答案 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();