синтаксис в LINQ IEnumerable <string> - PullRequest
2 голосов
/ 23 ноября 2011

Это мой код, который отлично работает:

  IPRepository rep = new IPRepository();
  var Q = rep.GetIp()
        .Where(x => x.CITY == CITY)
        .GroupBy(y => o.Fam)
        .Select(z => new IpDTO
        {
          IId = z.Key.Id,
          IP = z.Select(x => x.IP).Distinct()
       });

IP равен IEnumerable<string>

  1. Мне нужно добавить к этому коду выше вызов функции PAINTIP(ip).
  2. Мне нужно отправить каждый из элементов, которые будут внутри IP, в функцию PAINTIP(ip).поэтому мне нужно использовать какую-то функцию foreach, но я не могу понять, как.

Ответы [ 3 ]

2 голосов
/ 23 ноября 2011
rep.GetIp()
   .Where(x => x.CITY == CITY)
   .GroupBy(y => o.Fam)
   .Select(z => new IpDTO
                    {
                        IId = z.Key.Id,
                        IP = z.Select(x => x.IP).Distinct()
                    })
   .SelectMany(item => item.IP)
   .ToList()
   .ForEach(PAINTIP)
0 голосов
/ 23 ноября 2011

Вы можете сделать что-то вроде этого:

var result = from item in collection
             .Where(i => i.condition == value)
             .Select(i => new{ Name = i.name, Description = i.Description })
             .ToList().ForEach(i => Function(i));

Надеюсь, эта помощь!

0 голосов
/ 23 ноября 2011

Очень похоже на ответ на этот вопрос LINQ-эквивалент foreach для IEnumerable

Не существует For Each для IEnumerable, но существует для List

items.ToList().ForEach(i => i.DoStuff());

Редактировать

Я не уверен, что вы можете сделать это так, как вы хотите, кроме этого:

ep.GetIp()
   .Where(x => x.CITY == CITY)
   .GroupBy(y => o.Fam)
   .Select(z => new IpDTO
                {
                    IId = z.Key.Id,
                    IP = z.Select(x => x.IP).Distinct()
                })
   .ToList().ForEach(IpObj => IpObj.IP.ToList().ForEach(ip => PAINTIP(ip));

Таким образом, вы получите свойсписок объектов IpDTO вышел первым.Затем перечислите каждый из них, а затем по очереди перечислите каждый объект IpDTO IP IEnumerable.Я не видел способа сделать это, где вы можете перечислить внутри создания вашего объекта IpDTO.Если у кого-то есть пример того, как это сделать, я бы хотел посмотреть, чтобы самому научиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...