// GET: Actor/{name} public async Task <ActionResult> Details(string id) { var query = this._graphClient.Cypher .Match("(a:Person)") .Where("a.name = {name}") .WithParams(new { name = id }) .OptionalMatch("(a)-[:ACTED_IN]->(m:Movie)") .OptionalMatch("(m)<-[:ACTED_IN]-(o:Person)") .Where("a <> o") .Return((a, m, o) => new { Actor = a.As <Actor>(), Movies = m.CollectAsDistinct <Movie>(), CoActors = o.CollectAsDistinct <Actor>() }) .Limit(1); var model = (await query.ResultsAsync).SingleOrDefault(); if (model == null) { throw new KeyNotFoundException(); } var actor = new ActorWithMovies { Actor = model.Actor, Movies = model.Movies.OrderBy(x => x.title), CoActors = model.CoActors.OrderBy(x => x.name) }; return(base.View(actor)); }
public ActorWithMovies Get(int id) { ActorWithMovies act = (from a in _db.Actors where a.Id == id select new ActorWithMovies { Id = a.Id, FirstName = a.FirstName, LastName = a.LastName, Movies = (from am in _db.MovieActors where am.ActorId == a.Id select am.Movie).ToList() }).FirstOrDefault(); return(act); }