LINQ для SQL группы, имея - PullRequest
0 голосов
/ 15 мая 2009

Может ли кто-нибудь показать мой, как написать запрос, используя linq to sql to поиск пригородов, которые имеют как минимум 1 место в определенном штате

Расположение

SuburbID
SuburbName
StateName

Место проведения

VenueID
VenueName
SuburbName
StateName

Ответы [ 2 ]

2 голосов
/ 15 мая 2009
var locations = from loc 
                in dataContext.Locations 
                where loc.Venues.Count > 1 
                select loc

РЕДАКТИРОВАТЬ: Окончательный ответ:

Если у вас установлены внешние ключи между Местом расположения / Местом проведения:

string stateName = "New York";  

var locations = from loc 
                in dataContext.Locations 
                where loc.Venues.Count > 1 && loc.StateName == stateName 
                select loc;

Если нет связи с внешним ключом:

string stateName = "New York";

var locations = (from v 
                 in dataContext.Venues 
                 where v.StateName == stateName 
                 select (from l 
                         in dataContext.Locations 
                         where l.SuburbName == v.SuburbName && l.StateName == v.Statename              
                         select l
                        ).Single()).Distinct();

Действительно, вы должны починить свои таблицы. Таблица Venue должна иметь suburbID вместо «StateName» и «SuburbName» - излишне сохранять оба.

0 голосов
/ 15 мая 2009

Вот пара простых ответов:

var suburbNames = dataContext.Venues
  .Where(v => v.StateName == specificState)
  .GroupBy(v => v.SuburbName)
  .Select(g => g.Key)

           //

var locations = dataContext.Location
  .Where(loc => loc.StateName == specificState)
  .Where(loc => loc.Venues.Any())

С этим свойством Venues: вы можете получить это, добавив отношение в linq к конструктору sql - даже если внешний ключ не существует / не применяется в базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...