Запрос LINQ, возвращающий значение null при сравнении элементов в двух списках

Я проверяю элементы из двух списков и пытаюсь добавить в другой список:

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);
 }
 }
 }
</string></string></string,></productpacking></productpacking>

Скажем, мой идентификатор теста для prodSubstitute - 1,5,4,2,3. И элементы в tempList id равны 1,2,3. Когда я петлю через prodSubstitute, если prodSubstitute не содержит id из tempList, он должен был добавить в 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 ответ

Как насчет чего-то вроде этого:

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

Это должно приводить к различиям между тем, что в tempList и что в prodSubstitute и помещать его в список строк.

ПРИМЕЧАНИЕ. Это должно заменить весь код, который у вас есть.

licensed under cc by-sa 3.0 with attribution.