Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Новый топик    Ответить
 Linq - проблема с select  [new]
besserebrenik
Member

Откуда:
Сообщений: 49
Доброго времени суток. Столкнулся со следующей задачей.

Есть коллекция элементов, имеющих следующие поля: id и count
{{id = 1, count = 2}, {id = 2, count = 0}, {id = 3; count = 1}, {id = 4; count = 3}}

Нужно получить коллекцию вида {1, 1, 3, 4, 4, 4}

Проблема в том, что не хватает фантазии составить LINQ запрос

пытался в select описывать делегат возвращающий коллекцию элементов, но получил следующий результат
{{1, 1 }, {3}, {4, 4, 4}} т.е. список из списков

Подскажите пожалуйста правильный запрос
22 мар 12, 20:26    [12298130]     Ответить | Цитировать Сообщить модератору
 Re: Linq - проблема с select  [new]
ka3yc
Member

Откуда:
Сообщений: 14
besserebrenik
Доброго времени суток. Столкнулся со следующей задачей.

Есть коллекция элементов, имеющих следующие поля: id и count
{{id = 1, count = 2}, {id = 2, count = 0}, {id = 3; count = 1}, {id = 4; count = 3}}

Нужно получить коллекцию вида {1, 1, 3, 4, 4, 4}

Проблема в том, что не хватает фантазии составить LINQ запрос

пытался в select описывать делегат возвращающий коллекцию элементов, но получил следующий результат
{{1, 1 }, {3}, {4, 4, 4}} т.е. список из списков

Подскажите пожалуйста правильный запрос


Может, проще так?
var result = new List<int>();

list.ForEach( obj => {
 if(obj.count > 0)
   result.AddRange(/* здесь у вас уже готовый кусок :) */);
});

Либо используйте не метод Select(), а метод SelectMany(). Синтаксис тот же, но избавляет от списков списков :)
т.е. типа

var result = list.SelectMany(
  obj =>
    new List<int>(/* получаем список для объекта obj */));
22 мар 12, 23:52    [12298902]     Ответить | Цитировать Сообщить модератору
 Re: Linq - проблема с select  [new]
besserebrenik
Member

Откуда:
Сообщений: 49
Да) c SelectMany будет работать идеально
26 мар 12, 22:08    [12317555]     Ответить | Цитировать Сообщить модератору
Все форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM Ответить