比嵌套foreach更好的方法?

时间:2010-02-05 20:46:34

标签: c# linq foreach

我有一个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。

由于

1 个答案:

答案 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();