2013-10-27 5 views
-1

У меня есть базовый класс Posts и Notifications, Notes и Photos наследует от Posts. Как я могу создать один список со всеми унаследованными объектами из сообщений в одном List<Post>.Получить один список унаследованных объектов с помощью LINQ

  var notes = posts.OfType<Note>(); 
      var photos = posts.OfType<Photo>(); 
      var notifications = posts.OfType<Notification>(); ; 

      return (from n in notes 
        select new Stream() 
        { 
         id = n.post_id, 
         value = n.value, 
         timestamp = n.timestamp, 
         type = "note" 
        }).ToList(); 

Вышеуказанные конечно возвраты только примечания.

Заранее спасибо.

+3

Если у вас уже есть коллекция сообщений, почему вы используете заметки вместо этого в Linq запрос? – empi

+0

сообщений не возвращают унаследованные объекты ... – user1027620

+0

Пожалуйста, включите пример того, что содержит 'posts', и что вы хотели бы выбраться из него. – Magnus

ответ

0

У вас уже есть список объектов, которые наследуют от Posts:

var notes = posts.OfType<Note>(); 
var photos = posts.OfType<Photo>(); 
var notifications = posts.OfType<Notification>(); 

Составьте список Posts следующим образом.

List<Posts> posts = new List<Posts>(); 

и добавить Posts

//posts.Add(new Note()); 
//posts.Add(new Notification()); 
//posts.Add(new Photo()); 

posts.AddRange(notes); 
posts.AddRange(photos); 
posts.AddRange(notifications); 

// do the projection into Stream 
return (from n in posts 
     select new Stream() 
     { 
      id = n.post_id, 
      value = n.value, 
      timestamp = n.timestamp, 
      type = "note" 
     }).ToList(); 
Смежные вопросы