Выборка и добавление данных из коллекции - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день, очень простой вопрос! есть две таблицы (для простоты я опишу их как c# обьекты):
    class MoneyQuantities
    {
        public int Id;
        public int Denomination;
        public int Quantity;
    }
 
    class DefaultDenomination
    {
        public int Id;
        public int Denomination;
    }
 
            List<DefaultDenomination> denominations = new List<DefaultDenomination>
            {
                new DefaultDenomination {Id = 1, Denomination = 5},
                new DefaultDenomination {Id = 2, Denomination = 10},
                new DefaultDenomination {Id = 3, Denomination = 20}
            };
 
            List<MoneyQuantities> quantities = new List<MoneyQuantities>
            {
                new MoneyQuantities {Id = 1, Denomination = 10, Quantity = 100},
                new MoneyQuantities {Id = 2, Denomination = 20, Quantity = 200}
            };
Мне надо проверить quantities на наличие всех номиналов (Denomination) из denominations. И если номинала нету добавить его и с нулевым количеством. То есть результат должен быть:
            List<MoneyQuantities> quantities = new List<MoneyQuantities>
            {
                new MoneyQuantities {Id = 1, Denomination = 10, Quantity = 100},
                new MoneyQuantities {Id = 2, Denomination = 20, Quantity = 200},
                new MoneyQuantities {Id = 3, Denomination = 5, Quantity = 0}
            };
Сейчас есть:

Как это проще всего сделать?

Решение задачи: «Выборка и добавление данных из коллекции»

textual
Листинг программы
class MoneyQuantities
{
    public int Id;
    public int Denomination;
    public int Quantity;
 
    public static implicit operator DefaultDenomination(MoneyQuantities money) {
        var denom = new DefaultDenomination();
        denom.Denomination = money.Denomination;
        denom.Id = money.Id;
        return denom;
    }
}
 
class DefaultDenomination
{
    public int Id;
    public int Denomination;
}
 
class Program
{
    static void Main(string[] args) {
        List<DefaultDenomination> denominations = new List<DefaultDenomination>
        {
            new DefaultDenomination {Id = 1, Denomination = 5},
            new DefaultDenomination {Id = 2, Denomination = 10},
            new DefaultDenomination {Id = 3, Denomination = 20}
        };
 
        List<MoneyQuantities> quantities = new List<MoneyQuantities>
        {
            new MoneyQuantities {Id = 1, Denomination = 10, Quantity = 100},
            new MoneyQuantities {Id = 2, Denomination = 20, Quantity = 200}
        };
 
        var defQuantities = quantities.Select(money => (DefaultDenomination)money);
        var lostDenoms = denominations.Except(defQuantities);
 
        foreach (DefaultDenomination d in lostDenoms)
            quantities.Add(new MoneyQuantities {
                Denomination = d.Denomination,
                Id = d.Id,
                Quantity = 0
            });
    }
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.4 из 5
Похожие ответы