Я сомневаюсь, что ваш запрос на самом деле действительно возвращает город - вы в настоящее время выбираете только ресторан в своем запросе, вместо этого вы можете проецировать на специальный тип, который имеет необходимую информацию:
class RestaurantByCuisine
{
public string RestaurantName {get;set;}
public string CityName {get;set;}
public string CuisineName {get;set;}
}
public List<RestaurantByCuisine> getRestaurants(string cuisineName)
{
var cuisineID = db.CUISINEs.First(s => s.CUISINE_NAME == cuisineName).CUISINE_ID;
List<RestaurantByCuisine> result = (from RESTAURANT in db.RESTAURANTs
join CITY in db.CITies on RESTAURANT.CITY_ID equals CITY.CITY_ID
join CUISINE in db.CUISINEs on RESTAURANT.CUISINE_ID equals CUISINE.CUISINE_ID
where RESTAURANT.CUISINE_ID == cuisineID
select new RestaurantByCuisine()
{
RestaurantName = RESTAURANT.Name,
CityName = CITY.Name,
CuisineName = CUISINE.Name
).ToList();
return result;
}
Предполагается, что у ваших сущностей есть свойство Name
, в противном случае вы должны указать правильное имя свойства.
Обратите внимание, что у вашей сущности Restaurant уже есть свойства CITY_ID
, CUISINE_ID
, поэтому если это внешний ключ для соответствующих таблиц, у вас также должны быть свойства CITY
и CUISINE
.Они будут заполнены, если вы используете запрос Include()
для этих свойств, тогда запрос будет выглядеть следующим образом:
List<RESTAURANT> result = (from RESTAURANT in db.RESTAURANTs.Include(x => x.CITY).Include(x => x.CUISINE)
where RESTAURANT.CUISINE_ID == cuisineID
select RESTAURANT
).ToList();
Редактировать:
Похожевы используете Linq to Sql, в этом случае вы можете указать параметры загрузки непосредственно в контексте данных:
DL.FVRGDataContext db = new FVRGDataContext();
var dlo = new DataLoadOptions();
dlo.LoadWith<RESTAURANT>(r => r.CITY);
dlo.LoadWith<RESTAURANT>(r => r.CUISINE);
db.LoadOptions = dlo;
Тогда должно работать следующее:
List<RESTAURANT> result = (from RESTAURANT in db.RESTAURANTs
where RESTAURANT.CUISINE_ID == cuisineID
select RESTAURANT
).ToList();