我有一个Radios列表,我正在尝试生成一个更加用户友好的版本。在幕后,所有描述都是stringIds,所有部件号都是DB ID。
现在,我已经有了这段代码:
var z = (from w in wireless
join s in allStrings on w.DescriptionId equals s.StringId
join u in allUids on w.Uid equals u.Uid
where s.LanguageId == 0
select new {w, s, u});
List<RadioProperty> rp = new List<RadioProperty>();
foreach (var x in z)
{
foreach(var y in x.w.RadioToVoltage)
{
rp.Add(new RadioProperty
{
PartNumber = x.u.PartNumber,
Description = x.s.Description,
CurrentType = y.Id.VoltageType,
Voltage = y.Id.VoltageValue,
});
}
}
基本上,每个无线电部件号都可以有多个电压选项。 我们可以使用48VAC,110VAC和240VAC选项的ABC广播,所以我正在尝试创建3个独立的RadioProperty项目,每个电压选项一个。
有更好的方法吗?我正在运行.Net 3.5。
由于
答案 0 :(得分:2)
没有经过测试,但你应该能够在一个linq语句中得到所有这些内容。
List<RadioProperty> rp = (from w in wireless
join s in allStrings on w.DescriptionId equals s.StringId
join u in allUids on w.Uid equals u.Uid
where s.LanguageId == 0
from t in w.RadioToVoltage
select new RadioProperty {
PartNumber = w.u.PartNumber,
Description = w.s.Description,
CurrentType = t.Id.VoltageType,
Voltage = t.Id.VoltageValue,
}).ToList();