LINQ查询在比较两个列表中的元素时返回null

时间:2014-01-29 13:04:25

标签: c# asp.net linq

我正在检查两个列表中的元素并尝试添加到另一个列表中:

List<ProductPacking> prodSubstitute = new List<ProductPacking>();
tempList = new Dictionary<string, string>();
List<string> prodIDList = new List<string>();
for (int count = 0; count < prodSubstitute.Count; count++)
        {
            foreach (string key in tempList.Keys)
            {
                if (!prodSubstitute.Any(i => i.id == key))
                {
                    prodIDList.Add(prodSubstitute[count].id);
                }
            }
        }

假设我对prodSubstitute的测试ID是1,5,4,2,3。 tempList id中的元素是1,2,3。当我通过prodSubstitute进行循环时,如果prodSubstitute不包含tempList中的id,则应该将其添加到prodIDList中。但是,使用此LINQ查询,它只是返回null而不是5,4。

任何线索?提前谢谢。

修改

if (!prodIDList.Contains(prodSubstitute[count].id) && !(lstCategory.Where(x => x.Equals(categoryName)).Select(x => x).Count() >= 2))
                {
                    prodIDList.Add(prodSubstitute[count].id);
                    lstCategory.Add(categoryName);
                }

1 个答案:

答案 0 :(得分:0)

这样的事情怎么样:

var prodIDList = tempList.Keys.Except(prodSubstitute.Select(p => (string)p.id);

这应该产生tempList中的内容与prodSubstitute中的内容之间的差异,并将其放入字符串列表中。

注意:这应该替换您当前拥有的所有代码。