Я никогда не использовал JOIN(INNER, OUTER)
, и я не имею ни малейшего представления, когда это лучший сценарий:Я никогда не использовал JOIN. Когда правильное время?
Вот у меня есть два примера ActionResults
, который использует 2 или 3 запросы, чтобы получить объект, не лучше использовать a JOIN
вместо этого?
Первый пример:
public ActionResult JobTags(int id)
{
var jobTagsList = (from j in db.JobTags
where j.JobID == id
select j.TagID).ToList();
var tags = (from j in db.Tags
where jobTagsList.Contains(j.ID.ToString())
select j).ToList();
return View(tags);
}
Могу ли я просто JOIN
эти две таблицы и выберите, что J в конце?
Второй пример:
public ActionResult ImageListWhoApp(int id)
{
//We get here the ID from Job page using dbo.Jobs
var userIdList = (from j in db.Jobs
where j.ID == id
select j.ID.ToString()).ToList();
//We get here who applied at this job using dbo.AppliedJobs
var appJobIdList = (from j in db.AppliedJobs
where userIdList.Contains(j.JobID.ToString())
select j.UserID).ToList();
//Finally we get here the avatars of the user who applied at the job
//We are using this as a hyperlink to user profile.
var appUserImage = (from j in db.Images
where appJobIdList.Contains(j.UserID.ToString())
select j).ToList();
return View(appUserImage);
}
Не такой подход становится смешно? Или нормально делать такие вещи таким образом? Как я могу сделать JOIN
из этих заявлений 3 SQL
? Является ли это возможным? это лучший способ?
Благодарим вас за внимание!
У вас нет навигационных свойств в классах моделей? Это то, что делает Joins главным образом ненужным. –
меня тоже, потому что 'JOIN' в LINQ является подробным и ограниченным по сравнению с' JOIN' в T-SQL. – qxg
Если вы используете EF и имеете свойства навигации, тогда 'JOIN' обычно не требуется. Но если у вас есть два списка с объектами, которые вы хотите объединить, то это имеет большой смысл. – Oliver