是否可以将以下转换为更简单、更易读的 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 是客户端当前所在的 TierID 的数组 (int[])。doc 对象还包含一个 CommitmentProgram 对象,该对象包含 PriceProgram 列表。所以,我要做的就是获取每个 TierID 的 PriceProgram.ProgramID。
PriceProgram 和 TierID 之间的关系是每个 PriceProgram 都有一个层列表(ProgramTier 对象),而 ProgramTier 对象包含我们已经拥有的对应的 TierID。
如果我的解释没有意义,请告诉我,我会尝试详细说明。
编辑
乔恩,当我尝试编译您所建议的内容时,出现The name 'priceProgram' does not exist in the current 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);