public IQueryable<Dinner> FindByLocation(float latitude, float longitude)
        {
            var mr = new RiakMapReduceQuery { ContentType = RiakConstants.ContentTypes.ApplicationJson };

            var input = new RiakIntIndexRangeInput(DinnerBucket, "EventDate_int", int.Parse(DateTime.Now.ToString("yyyyMMdd")), int.MaxValue);

            mr.Inputs(input)
                .MapJs(m => m.Name("Riak.mapValuesJson").Keep(false))
                .MapJs(
                    m =>
                    m.Source(
                        @"
            function (value, keyData, arg) {
            // From http://stackoverflow.com/questions/27928/how-do-i-calculate-distance-between-two-latitude-longitude-points
            var lat, long = arg.split(""|"");

            var R = 6371; // Radius of the earth in km
            var dLat = (lat2-lat).toRad();  // Javascript functions in radians
            var dLon = (lon2-lon).toRad();
            var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
            Math.cos(lat1.toRad()) * Math.cos(lat2.toRad()) *
            Math.sin(dLon/2) * Math.sin(dLon/2);
            var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
            var d = R * c; // Distance in km
            var m = d * 1.609344; // Distance in miles

            if (m < 100) {
            return [value];
            }
            else
            {
            return [];
            }
            }
            ")
                        .Argument(string.Format("{0}|{1}", latitude, longitude))
                        .Keep(true));

            return MapReduceDinners(mr);

            //var dinners = from dinner in FindUpcomingDinners()
            //              join i in NearestDinners(latitude, longitude)
            //              on dinner.DinnerID equals i.DinnerID
            //              select dinner;

            //return dinners;
        }
        public IQueryable<Dinner> FindUpcomingDinners()
        {
            var mr = new RiakMapReduceQuery { ContentType = RiakConstants.ContentTypes.ApplicationJson };

            // TODO: Modify DinnerId to be a string.

            var input = new RiakIntIndexRangeInput(DinnerBucket, "EventDate_int", int.Parse(DateTime.Now.ToString("yyyyMMdd")), int.MaxValue);

            mr.Inputs(input)
                .MapJs(m => m.Name("Riak.mapValuesJson").Keep(true));

            return MapReduceDinners(mr);

            //return from dinner in FindAllDinners()
            //       where dinner.EventDate >= DateTime.Now
            //       orderby dinner.EventDate
            //       select dinner;
        }