示例#1
0
        // 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);
        }