Можно ли преобразовать следующее в более простое и удобочитаемое выражение linq или lambda?
Dictionary<int, int> selectedProgramTierCombo = new Dictionary<int,int>();
foreach (int mainTierID in doc.TierID)
{
foreach (PriceProgram priceProgram in doc.CommitmentProgram.PricingPrograms)
{
foreach (ProgramTier progTier in priceProgram.Tiers)
{
if (progTier.TierID == mainTierID )
{
selectedProgramTierCombo.Add(priceProgram.ProgramID, progTier.TierID);
}
}
}
}
По сути, doc.TierID - это массив (int []) TierID, в котором в данный момент находится клиент.Также объект doc содержит объект CommitmentProgram, который содержит список PriceProgram.Итак, все, что я пытаюсь сделать, это получить PriceProgram.ProgramID для каждого TierID.
Связь между PriceProgram и TierID заключается в том, что каждая PriceProgram имеет список уровней (объект ProgramTier), а объект ProgramTier содержит соответствующий TierID, который у нас уже есть.
Дайте мне знать, если мое объяснение нене имеет смысла, и я попытаюсь уточнить.
Редактировать
Джон, я получаю Название 'priceProgram' не существует в текущемcontext ошибка, когда я пытаюсь скомпилировать то, что вы предложили:
Dictionary<int, int> selectedProgramTierCombo =
(from mainTierID in doc.TierID
from priceProgram in doc.CommitmentProgram.PricingPrograms
**join progTier in priceProgram.Tiers on mainTierID equals progTier.TierID**
select new { priceProgram.ProgramID, progTier.TierID })
.ToDictionary(x => x.ProgramID, x => x.TierID);