Выборка и добавление данных из коллекции - C#
Формулировка задачи:
Добрый день, очень простой вопрос!
есть две таблицы (для простоты я опишу их как c# обьекты):
Мне надо проверить quantities на наличие всех номиналов (Denomination) из denominations. И если номинала нету добавить его и с нулевым количеством.
То есть результат должен быть:
Сейчас есть:
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}
}; 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
});
}
}