2009-10-08 7 views

Répondre

0

fait avec une requête LINQ en utilisant des lignes de code suivantes:

  c = from q in dc.restaurant_cuisines 
        where q.cuisine.cuisine1.Contains(cuisine) 
         && q.restaurant.price.ToString().Length == price.Length 
        select new NearBy { NearById = q.restaurant.id, NearByLongitude = (double)q.restaurant.longitude, NearByLatitude = (double)q.restaurant.latitude }; 
     } 
     int[] ids = new int[c.Count()]; 

var lon = from q1 in dc.area_maps where q1.area.ToLower() == area.ToLower() select q1.longtitude; 
     var lat = from q1 in dc.area_maps where q1.area.ToLower() == area.ToLower() select q1.latitude; 
     foreach(NearBy n in c) 
     { 
      result = calcDistNew((double)lat.FirstOrDefault(), (double)lon.FirstOrDefault(), n.NearByLatitude, n.NearByLongitude); 
      ids[i++] = n.NearById; 
     } 


     var r = from q in dc.restaurant_details 
       where 1 == 1 && 
       (ids).Contains(q.restaurant_id) 
       select new Restaurant 
       { 
        Restora_id = q.restaurant_id.ToString(), 
        Name = q.restaurant.name, 
        Foodtype = q.restaurant.foodtype.foodtype1, 
        Avg_rating = q.restaurant.avg_rating.ToString(), 
        Featured = q.restaurant.featured.ToString(), 
        CuisineList = getCuisine(q.restaurant_id), 
        Restora_type = q.type, 
        Distance = Math.Round(calcDistNew((double)lat.FirstOrDefault(), (double)lon.FirstOrDefault(), (double)q.restaurant.latitude, (double)q.restaurant.longitude), 2), 
        Newarrival = q.restaurant.newarrival.ToString(), 
        CountRecord = ids.Length.ToString() 
       }; 
     var d = r.AsEnumerable().OrderBy(t => t.Distance); 
     var g = d.Take(recordSize + 10).Skip(recordSize); 
     return g.ToList(); 

S'il vous plaît noter que ci-dessus affiche le code généré avec quelques modifications par rapport aux exigences initiales.

0

Je présume que vous avez un modèle généré avec LINQ to SQL ou Entity Framework. En outre, je suppose que des relations de clés étrangères ont été établies.

var details = db 
    .Cuisines 
    .Where(c => c.Cuisine=="something") 
    .SelectMany(c => c.RestaurantCuisines) 
    .Select(rc => rc.Restaurant.RestaurantDetails) 
    .Where(rd => rd.Area=="something") 
; 
+0

Je reçois le résultat de cette requête: select * from restaurant_details où restaurant_id dans (sélectionnez restaurant_id de restaurant_cuisine où restaurant_cuisine.cuisine_id dans (sélectionnez id de cuisine où cuisine = 'quelque chose') et area = 'quelque chose' Maintenant je veux pour le convertir en Linq. – Nirmal