Лучший способ, чем вложение foreach? - PullRequest
2 голосов
/ 05 февраля 2010

У меня есть список радио, которые я пытаюсь создать более удобную для пользователя версию. За кулисами все описания являются строковыми идентификаторами, а все номера деталей - идентификаторами БД.

Прямо сейчас, у меня есть этот код:

       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,
                });
            }
        }

В принципе, каждый номер радиоприемника может иметь несколько вариантов напряжения. У нас может быть Radio ABC с опциями 48 В, 110 В и 240 В, поэтому я пытаюсь создать 3 отдельных элемента RadioProperty, по одному для каждого варианта напряжения.

Есть ли лучший способ сделать это? Я использую .Net 3.5.

Спасибо

1 Ответ

2 голосов
/ 05 февраля 2010

не проверено, но вы можете получить все это в одном выражении 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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...