Это не может работать, потому что ppCombined
представляет собой набор объектов в памяти, и вы не можете присоединиться к набору данных в базе данных с другим набором данных, который находится в памяти. Вместо этого вы можете попытаться извлечь отфильтрованные элементы personProtocol
коллекции ppCombined
в память после , вы получили другие свойства из базы данных:
var persons = db.Favorites
.Where(f => f.userId == userId)
.Join(db.Person, f => f.personId, p => p.personId, (f, p) =>
new // anonymous object
{
personId = p.personId,
addressId = p.addressId,
favoriteId = f.favoriteId,
})
.AsEnumerable() // database query ends here, the rest is a query in memory
.Select(x =>
new PersonDTO
{
personId = x.personId,
addressId = x.addressId,
favoriteId = x.favoriteId,
personProtocol = ppCombined
.Where(p => p.personId == x.personId)
.Select(p => new PersonProtocol
{
personProtocolId = p.personProtocolId,
activateDt = p.activateDt,
personId = p.personId
})
.ToList()
});
Вы могли использовать send_data:
send_data pptdata, :filename => 'your_file_name.ppt',
:disposition => 'inline', :type => "multipart/related"
Другое преимущество этого - Вы, может использовать x-sendfile, так, чтобы Вы были полукровкой / тонкий не ожидает, в то время как клиент загружает данные.
<час>Другая опция состояла бы в том, чтобы иметь маршрут как:
/elements/3/files/foo.ppt
Тогда в Вашем выставочном методе для FilesController можно отправить то, чем был бы идентификационный параметр.