Exemple #1
0
        /// <summary>
        /// 返回单程有一个中转站 且不指定中转站
        /// </summary>
        /// <param name="origincode">起点</param>
        /// <param name="origindate">起点时间</param>
        /// <param name="destcode">终点</param>
        /// <param name="destdate">终点时间</param>
        public void OneWay1(string origincode, string origindate, string destcode, string destdate)
        {
            int stimes = getTimeDays(Session["origintime"].ToString());
            int etimes = getTimeDays(Session["desttime"].ToString());
            var client = new GraphClient(new Uri("http://120.25.59.147:7474/db/data"), "neo4j", "gaoxia");

            client.Connect();
            var query = client.Cypher
                        .Match("(origin:Airportday)-[r1:Route]->(a1:Airportday)")
                        .Match("(a2:Airportday{airportcode:a1.airportcode})-[r2:Route]->(dest:Airportday)")
                        .Where((Airport origin) => origin.airportcode == origincode)
                        .AndWhere((Airport origin) => origin.day == origindate)
                        .AndWhere((Airport dest) => dest.airportcode == destcode)
                        .AndWhere((Airport dest) => dest.day == destdate)
                        .AndWhere((Airport a2) => a2.day_long > stimes)
                        .AndWhere((Airport a2) => a2.day_long < etimes)
                        .AndWhere((Airport a2, Airport a1) => a2.day_long >= a1.day_long)
                        //.AndWhere((Route r2, Route r1) => r2.departuretime_long-r1.arrivaltime_long>3 * 3600)
                        .Return((origin, r1, a1, r2, dest) => new
            {
                origin = origin.As <Airport>(),
                r1     = r1.As <Route>(),
                a1     = a1.As <Airport>(),
                r2     = r2.As <Route>(),
                dest   = dest.As <Airport>()
            }).Limit(100);

            foreach (var result in query.Results)
            {
                Route r = new Route();
                r.flightno      = result.r1.flightno;
                r.price         = result.r1.price;
                r.arrivaltime   = result.r1.arrivaltime;
                r.departuretime = result.r1.departuretime;

                Route r2 = new Route();
                r2.flightno      = result.r2.flightno;
                r2.price         = result.r2.price;
                r2.arrivaltime   = result.r2.arrivaltime;
                r2.departuretime = result.r2.departuretime;

                originlist.Add(result.origin.airportcode);
                routelist.Add(r);
                airportlist.Add(result.a1.airportcode);
                routelist2.Add(r2);
                destlist.Add(result.dest.airportcode);
            }
            client.Dispose();
        }
Exemple #2
0
 public void Dispose()
 {
     client.Dispose();
 }
 public void Dispose()
 {
     Client?.Dispose();
 }
Exemple #4
0
 public void Dispose()
 {
     graph.Dispose();
 }
Exemple #5
0
 private void Disconnect()
 {
     client.Dispose();
 }
        static void Main(string[] args)
        {
            // edit these to match your Neo4j Database User and Password
            string dbuser = "******";
            string dbpasswd = "neo4jj";

            #region Database Connection via Neo4jClient

            var client = new GraphClient(new Uri("http://localhost:7474/db/data"), dbuser, dbpasswd);
            client.Connect();

            #endregion

            #region First Query <Movie, Year, TagLine>

            // Get the movies
            var movies = client.Cypher
                       .Match("(m:Movie)")
                       .Return(m => m.As<Movie>())
                       .Limit(4)
                       .Results;


            // set title
            Console.Title = "WSL Neo4j Demo Query";

            // clear screen
            Console.Clear();

            // print header
            Console.WriteLine();
            Console.WriteLine("List Movies (Limit = 4)");
            Console.WriteLine("-----------------------");
            foreach (var movie in movies)
            {
                // Write the results
                 Console.WriteLine(
                    $"{movie.Title.PadRight(22)} " +
                    $"{Convert.ToString(movie.Released).PadRight(5)}" +
                    $"{movie.TagLine}"
                    );
            }

            #endregion

            #region Second Query Actor <Name, Born>
            
            var persons = client.Cypher
                       .Match("(a:Person)")
                       .Return(a => a.As<Person>())
                       .Limit(4)
                       .Results;
            Console.WriteLine("\nActor Query (Limit = 4)");
            Console.WriteLine("-------------------------");
            foreach (var person in persons)
            {
                // Write the results
                Console.WriteLine(
                    $"{person.Name.PadRight(20)} " +
                    $"{Convert.ToString(person.Born)}"
                    );
            }
            client.Dispose(); // ensure the client is closed

            #endregion

            #region Third and Fourth Query (Producer Joel Silver) and (Acted in and Directed)

            using (var driver = GraphDatabase.Driver("bolt://localhost", AuthTokens.Basic(dbuser, dbpasswd)))
            using (var session = driver.Session())
            {
                var result1 = session.Run("MATCH (a:Person)-[:PRODUCED]->(m:Movie) WHERE a.name = 'Tom Hanks' RETURN m");

                Console.WriteLine("\nProducer (Tom Hanks)");
                Console.WriteLine("-------------------------");
                foreach (var node in result1)
                {
                    var iNode = node["m"].As<INode>();
                    Console.WriteLine($"{iNode.Properties["title"].As<String>()}");
                    //Console.WriteLine($"Released: {iNode.Properties["released"].As<String>()}\n\n");
                }

                // Could probably do a UNION or second foreach to get Movie "title" also
                var result2 = session.Run("MATCH (a)-[:ACTED_IN]->(m)<-[:DIRECTED]-(a) RETURN a");
                Console.WriteLine("\nWho Acted & Directed");
                Console.WriteLine("------------------------------");
                foreach (var node in result2)
                {
                    var iNode = node["a"].As<INode>();
                    Console.WriteLine($"{iNode.Properties["name"].As<String>()}" +
                        $", Born in {iNode.Properties["born"].As<String>()}");
                }
            }

            #endregion

            Environment.Exit(0);
        }
 public void Dispose()
 {
     //_driver?.Dispose();
     _client?.Dispose();
 }
Exemple #8
0
 public void Dispose()
 {
     _graphClient.Dispose();
 }
 public void Dispose()
 {
     _client?.Dispose();
 }