2014-01-16 5 views
2

Элементы, имеющие одинаковые номера позиций, не должны повторяться в списке, я пробовал этот кусок кода, но это не помогает.Повторяющиеся элементы в списке

if (salesX.Count > 0) 
{ 
    foreach (SalesList saleX in salesX.ToList()) 
    { 
     int index = sales.FindIndex(item => item.ItemNumber == saleX.ItemNumber); 
     if (index > 0) 
     { 
      sales[index].PosQuantity = +saleX.PosQuantity; 
      sales[index].PosSales = +saleX.PosSales; 

     } 
     else { sales.Add(saleX); } 
    } 
} 

ответ

4

Если в начале списка имеется соответствующий элемент, вы все равно добавите дубликат.
Вы хотите проверить, равен ли индекс нулю.

+0

Спасибо за помощь. Если у вас есть время, вы можете помочь мне в этой теме: http://stackoverflow.com/questions/21168572/what-is-the-optimum-way-of-getting-records-from-database-in-scenario -that-you-ha – Davy

1

Одним из возможных решений было бы создать список словарей, чтобы определить, существует ли элемент.

Словарь будет перечислять все уникальные ItemNumbers, и вы бы использовали метод ContainsKey, чтобы определить, существует ли он.

MSDN Link

+0

Спасибо за консультацию. – Davy

1

Измените условие index != -1, и он должен работать

if (index != -1) 
{ 
    sales[index].PosQuantity = +saleX.PosQuantity; 
    sales[index].PosSales = +saleX.PosSales; 

} 
+0

Спасибо за помощь. Это решило мою проблему. – Davy

Смежные вопросы