загрузить свойства навигации с помощью фильтра для Entity Framework 4.3

Несколько дней назад я положилвопрос относительно отображения двух классовMessage а такжеMessageStatusHistory используя EF. Отображение идет нормально, но я столкнулся с некоторыми проблемами со свойством навигацииStatusHistory в классеMessage это связано сMessageStatusHistory объекты. Я загружаю сообщения только для одного пользователя и хочу статусы, относящиеся только к этому пользователю. Как я хотел бы показать, если пользователь отметил сообщение как прочитанное / не прочитанное и когда. Если я использую механизм загрузки по умолчанию, подобный следующему, он загружает всю историю, связанную с сообщением, независимо от пользователя:

IDbSet<Message> dbs = _repo.DbSet;
dbs.Include("StatusHistory").Where(x=>x.MessageIdentifier == msgIdentifier);

Чтобы отфильтровать историю только для одного пользователя, я попробовал следующий трюк:

IDbSet<Message> dbs = _repo.DbSet;
var q = from m in dbs.Include("StatusHistory")
        where m.MessageIdentifier == msgIdentifier
        select new Message
        {
            MessageIdentifier = m.MessageIdentifier,
            /*OTHER PROPERTIES*/
            StatusHistory = m.StatusHistory
                             .Where(x => x.UserId == userId).ToList()
        };

return q.ToList();//THROWING ERROR ON THIS LINE

Я получаю ошибку:

The entity or complex type 'MyLib.Biz.Message' cannot be constructed in a LINQ 
to Entities query.

Я пытался комментироватьStatusHistory = m.StatusHistory.Where(x => x.UserId == userId).ToList() Также, но это не помогло.

Пожалуйста, помогите мне в получении сообщений с отфильтрованной StatusHistory.

EDIT:- выше разрешается с помощью этого кода:

var q = from m in _repository.DBSet.Include("Histories")
        where m.MessageIdentifier == id
        select new {
                     m.Id,/*OTHER PROPERTIES*/
                     Histories = m.Histories.Where(x => 
                                   x.SenderId == userId).ToList()
                   };

var lst = q.ToList();
return lst.Select(m => new Message{
           Id = m.Id, MessageIdentifier = m.MessageIdentifier, 
           MessageText = m.MessageText, Replies = m.Replies, 
           ReplyTo = m.ReplyTo, Histories = m.Histories, SenderId = 
           m.SenderId, SenderName = m.SenderName, CreatedOn = m.CreatedOn
       }).ToList();

Но если я попытаюсь включить ответы на сообщение с:

from m in _repository.DBSet.Include("Replies").Include("Histories")

Я получаю сообщение об ошибке при преобразовании запроса в список сq.ToList() заHistories = m.Histories.Where(x=> x.SenderId == userId).ToList().

Ответы на вопрос(1)

Ваш ответ на вопрос