Есть ли лучший способ закодировать этот Duplicate ID Checker? - PullRequest
1 голос
/ 07 марта 2019

Прежде всего, извините за плохой английский, это не мой основной язык.Во-вторых, я не знаю, принадлежит ли это здесь или в Code Review.


По сути, этот метод запрашивает Inventory (List<Product>), где находится объект, и значение Int32 для Product ID.
Затем он проверяет, присутствует ли ID Product.в указанном инвентаре, и если это так, функция ищет самое низкое значение Int32, доступное для идентификатора.

Преимущество этого метода состоит в том, что никакие номера идентификаторов не расходуются впустую, но я бы хотелуслышать некоторые мнения о том, как я могу улучшить его ...
if (inventory.Products.Where(x => x.ID == id).Any())
{
    idChanged = true;
    bool towardsNegative = true;

    while (inventory.Products.Where(x => x.ID == id).Any())
    {
        if(id < 0 && towardsNegative)
        {
            towardsNegative = false;
            id++;
        }

        if(towardsNegative)
        {
            id--;
        }
        else
        {
            id++;
        }
    }
}

1 Ответ

0 голосов
/ 07 марта 2019

Пожалуйста, попробуйте это.

var data =  inventory.Products.GroupBy(x => x.ID).Where(x => x.Count() > 1).Select(x=>x.Key).ToList()

В этих данных результаты дают только дубликаты записей.

Например

public class Friend
{
  public int id { get; set; }
}
 List<Friend> lst = new List<Friend>();
            lst.Add(new Friend{ id = 1});
            lst.Add(new Friend { id = 1 });
            lst.Add(new Friend { id = 2 });
            lst.Add(new Friend { id = 3 });
            lst.Add(new Friend { id = 3 });
            lst.Add(new Friend { id = 4 });
var data1 = lst.GroupBy(x => x.id).Where(x => x.Count() > 1).Select(x=>x.Key).ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...