Akshay malvankar Ответов: 3

Найти дубликат элемента из списка в C#


я хочу найти дубликат элемента из моего списка в c#
ниже приведен мой код

public List<Product> products_list = new List<Product>();
    static List<Product> cart_list = new List<Product>();

var product = products_list.Where(x=> x.prodID == Convert.ToInt32(product_id)); 
        
        foreach(var data in product){
            
            cart_list.Add(data);
          }


сверху я не хотел добавлять дубликат элемента в корзину

Что я уже пробовал:

я попробую это сделать

var duplicates = list.GroupBy(s => s.ToUpper())
							 .Where(g => g.Count() > 1)
							 .Select(g => g.Key);
		
		foreach (var dupe in duplicates)
		{
			Console.WriteLine(dupe);
		}

3 Ответов

Рейтинг:
24

Akmishra0719

публичный список<product> products_list = новый список<product>();
статический список<product> cart_list = новый список<product>();

продукт ВАР = products_list.Где(x=> x.prodID == Convert.ToInt32(product_id));

данные по каждому элементу(ВАР продукт){
если(!cart_list.Существует(х=>У Х.код продукта == сведения .код продукта )){
cart_list.Добавить данные);
}
}


Рейтинг:
0

OriginalGriff

Предположительно, ваш list содержит Product объекты - потому что если бы это было не так, то не было бы никакого смысла показывать нам первый фрагмент кода - а это означает, что ваш GroupBy полагается на две вещи:
1) в Product класс должен переопределить ToString - если это не так, то сравнение, которое вы используете, будет сравнивать одно и то же значение каждый раз: "MyNamespace.Продукт" - и это приведет к тому, что все товары будут находиться в одной группе.
2) Если Product отменяет ToString, возвращаемая строка должна значительно отличаться между различными Products, но возвращают одинаковые строки для "дубликатов".

На первый взгляд, вы хотите сравнить какой-то элемент Product - возможно, это партнерский номер, а может быть, это штрих - код-вместо одеяльной струны. Но у нас нет доступа к вашему коду, поэтому мы не можем точно сказать, что представляет собой "дубликат" с точки зрения вашего кода.


Рейтинг:
0

F-ES Sitecore

Вместо того чтобы удалять дубликаты, вы должны просто не добавлять их в первую очередь. Как сказал OriginalGriff, мы не знаем, как вы определяете "дубликат"

В этом коде я предполагаю, что вам не нужны элементы с одним и тем же prodID

foreach (var data in product)
{
    if (!cart_list.Any(p => p.prodID == data.prodID))
    {
        cart_list.Add(data);
    }
}


Несвязанные, но не используйте статику для своей тележки. Я знаю, что это выглядит так, как будто это работает, но это потому, что у вас есть только один пользователь ... вы. Просмотрите свой сайт из двух разных браузеров, и вы увидите, что все ваши пользователи используют одну корзину. Вместо этого используйте сеанс для хранения корзины.