LINQ2SQL: объединить несколько таблиц - PullRequest
4 голосов
/ 07 января 2011

Я не так хорош в linq2sql или даже в sql, но все идет с небольшим обучением.

Мой вопрос: у меня есть 3 таблицы: проекты, папки и задачи.

Iнужно сделать запрос, чтобы я присоединился к этим 3 таблицам.

Я немного попробовал:

public ActionResult Details(string id) {
        var user = GetProfile().Id;
        var p = _db.Projects.Where(x => Convert.ToString(x.ProjectId) == id && x.UserId == user).SingleOrDefault();
        var f = _db.Folders.Where(x => x.ProjectId == p.ProjectId).ToList();
        return View(f);
    }

Это работает нормально, и я получаю папки, связанные с проектом.Теперь я хочу, чтобы в том же запросе были заданы задачи, связанные с папками и проектом.

Итак, в конце я получаю такой сценарий: нажмите на название проекта, отправьте идентификатор, получите идентификатор ипредставляет папки, связанные с проектом, на котором я нажал, и представляет задачи на том же сайте, что и папки.

Ответы [ 2 ]

8 голосов
/ 07 января 2011

Я не совсем уверен в том, что вы пытаетесь достичь именно здесь. Но вот запрос linq to sql, где я объединяю проекты в папки и папки в задачи. В Project есть поле с именем ProjectId, а в папке также есть «ProjectId», к которому я присоединяюсь. Папки будут иметь «FolderId», а задачи также будут иметь «FolderId», предполагая то же соглашение об именах. Надеюсь, это поможет:

var result = (from projects in _db.Projects
                      join folders in _db.Folders
                      on projects.ProjectId equals folders.ProjectId
                      join tasks in _db.Tasks
                      on folders.FolderId equals tasks.FolderId
                      where projects.Id.ToString() == id
                      && projects.UserId == user
                      select projects).ToList();

результат будет представлять список проектов, соответствующих критериям.

1 голос
/ 07 января 2011

Я не эксперт в преобразовании SQL в Linq, но в духе предложения инструмента, который можно использовать снова и снова для преобразования сложных запросов SQL в LINQ, возможно, вы можете проверить

Linqer

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